0

重複の可能性:
プロパティとインスタンス変数の宣言

次の 2 つの違いは何ですか。

SomeClass.h

@interface SomeClass : NSObject {
     NSString *someString;
}

@property (strong, nonatomic) NSString *someString;
@end

SomeClass.h

@interface SomeClass : NSObject

@property (strong, nonatomic) NSString *someString;

@end

インターフェイスの後の { } 内の宣言とプロパティの違いはわかりますが、両方を使用する場合とプロパティのみを使用する場合の違いは何ですか?

4

2 に答える 2

2

LLVM バージョン 4.2 コンパイラ以降、違いはなくなりました。{} 内でプロパティ変数を宣言する必要がなくなりました。

于 2013-01-04T16:56:12.387 に答える
1
{
     NSString *someString;
}

これはアイバーです。


@property (strong, nonatomic) NSString *someString;

セッターとゲッター(アクセサー)を作成するプロパティです。また、同じ名前のクラス インスタンスが 1 つ作成されます。

編集:

ivar のみを使用する場合、self.ivar 名は使用できません。

_ivar で使用する必要があり、ivar に直接という意味です。

{ & } 内は保護されています。@property はパブリックですが。

于 2013-01-04T16:56:50.610 に答える