13

Objective-Cでは、次のことを行うのがベストプラクティスですか。

  1. .hでボタンなどのオブジェクトを宣言してから、.mで合成します

    .h
    @interface SomeViewController : UIViewController  
      @property (strong, nonatomic) UIButton *someButton;  
    @end
    
    .m
    @implementation SomeViewController  
      @synthesize someButton = _someButton;  
    @end
    
  2. または、.mでそれらをivarとして宣言します

    @interface SomeViewController ()  
      @property (strong, nonatomic) UIButton *someButton;  
    @end  
    

多くのAppleコード、特にBreadcrumbsサンプルコードでは、それらのプロパティの多くがインターフェイスで宣言されていることに気付きました。2つの間に違いはありますか?@interfaceまた、プロパティがで宣言されている場合、プロパティはアンダースコアプレフィックスを使用して自動的に合成されるため、someButton = _someButton合成が役に立たないことに気付きました。

4

1 に答える 1

31

まず、Xcode 4.4以降、またはで宣言されている@synthesize場合は、(setterメソッドとgetterメソッドの両方を変更しない限り)変更する必要はありません。@property@interface@implementation

@propertyがクラス内からのみアクセスされる場合は、.mファイル@propertyクラス拡張子でを宣言します。@propertyこれにより、カプセル化が提供され、が別のクラスから使用されていないことが簡単にわかります。

@propertyが他のクラスで使用されている場合は、設計上、 @interface.hファイルで定義します。

于 2013-01-03T02:08:31.877 に答える