12

ヘッダーでプライベート インスタンス変数を宣言することと、実装で宣言することの間に違いはありますか?

TestObj.h で

@interface TestObj : NSObject
{
    int test;
}
@end

vs TestObj.m

@interface TestObj()
{
    int test;
}
@end

どちらも私には同等のように見えますが、ヘッダーでインスタンス変数を宣言することと実装でインスタンス変数を宣言することの間に実際の違いはありますか? 実装ファイル内では、@interfaceプライベート プロパティを宣言する方法のように見えますが、それ以外の目的はありますか?

4

2 に答える 2

7

受け入れられた回答に対するGreg Parkerのコメントは、ここでの最良の回答です。

機能上の違いが 1 つあります。クラスのivar@interface@protectedデフォルトであり、クラス拡張 @interface または in の ivar は@implementationデフォルト@privateです。

于 2015-04-08T21:52:00.197 に答える