0

最近では、Objective-C で明示的に宣言されたインスタンス変数は避けるべきものと見なされており、「プライベート」プロパティ、つまり .m ファイルのクラス拡張で宣言されたプロパティを使用することが好まれているようです。

この最後の例は、Objective-C の進歩に関する WWDC '12 プレゼンテーションです。

私が見つけることができなかったのは、この好みの理論的根拠であり、私はたくさん検索しました. これは明らかに脆弱な基本クラスの問題に対するある種の解決策を提供しますが、それはすでに Objective-C 2 で解決されています。

私が見逃した重要なドキュメントがありますか、それとも親切な魂がここで提供できる簡単な説明はありますか?

4

1 に答える 1

2

これのことですか?

@interface Foo : NSObject {
    float bar;
    id baz;
}

これらのインスタンス変数がパブリック インターフェイスの一部でない場合は、クラス拡張で宣言されたプロパティとして、または@implementationブロックに、実装ファイルに移動することをお勧めします。

@interface Foo ()
@property(assign) float bar;
@property(strong) id baz;
@end

…また:

@implementation Foo {
    float bar;
    id baz;
}

このように、ヘッダーで宣言されたパブリック インターフェイスは単純なままであり、実装の変更によって、ヘッダーをインポートするすべてのソース ファイルの再コンパイルが強制されることはありません。

于 2012-06-27T13:07:04.283 に答える