私はIBOutletsの次のセットアップを参照してください。IBOutletはプロパティで合成する必要がありますか?ほとんどの例では
(Example A)
FooController.h:
@interface FooController : UIViewController {
UILabel *fooLabel;
}
@property (nonatomic, retain) IBOutlet UILabel *fooLabel;
@end
FooController.m:
@implementation FooController
@synthesize fooLabel;
@end
しかし、これはまた、正常に動作します(予告:なしプロパティなしのsynthesize):
(Example B)
FooController.h:
@interface FooController : UIViewController {
IBOutlet UILabel *fooLabel;
}
@end
FooController.m:
@implementation FooController
@end
は定義IBOutletsのいずれかの欠点が通りあります実施例Bでは?メモリリークのような?うまく動作するように見えますが、私はIBOutletをパブリックプロパティとして公開しないことを好みます。これは、コントローラの実装でのみ使用されます。本当の必要がない3つの場所でそれを定義することは私に非常にドライ(あなた自身を繰り返さないでください)と私を打つことはありません。
こんにちは、詳細な回答ありがとうございます!非常に役に立ちます –
変数名がプロパティ名と異なる場合はどうなりますか?違うかどうか? –
上記の "OutletName"という名前は、ソースコードの "IBOutlet"キーワードの隣にあるものとして定義されています。 IBOutletが@propertyにある場合、セッターが見つかるので、インスタンス変数の名前は関係ありません。何らかの理由でセッターが存在しない場合は、コンセントを接続するときに例外が発生します。 IBOutletキーワードがインスタンス変数にあり、一致しない名前のセッターが存在する場合、セッターは呼び出されません。 –