0

UIViewController 全体で使用される NSArray オブジェクトがあります。ivar またはプロパティとして宣言できます。どちらのアプローチにも利点はありますか (ARC を使用していることを考慮して)?

オプション1:

@interface MyViewController {
    NSArray *_myArray;
}
@end

オプション 2:

@interface MyViewController
    @property (strong, nonatomic) NSArray *myArray;
@end
4

1 に答える 1

1

プロパティと ivar は概念的にかなり異なります。

プロパティは、コードの論理コンポーネントを表します。ivar によってサポートされる場合がありますが、必須ではありません。実行時に計算されて動的に生成される可能性があります(ビューの-frameなど)。

ivarは、いくつかのデータを保持する実際に割り当てられたメモリ ブロックです

プロパティを (正しく) 使用すると、KVC/KVO 準拠などの優れた機能をすぐに利用できます。このような理由から、特に最新のランタイムでは、すべてのパブリック インターフェイスをプロパティの形式で宣言し、必要に応じて ivar (頻繁に を使用@synthesize) でそれらを内部的にバックアップすることが、多くの場合、良い習慣であると考えられています。

個人的には、プライベート データにもプロパティを使用することを好みます。必要に応じて後で簡単に公開できるようにするため (宣言をヘッダーに移動するだけです!)、プロパティのカスタム実装 (およびセッター/単純な ivar に依存する代わりに、mutators) を使用します。

あなたがARCについて言及して以来、私は(まだ)あまり使用していませんが、プロパティを正しく宣言している限り、大きな違いはないと思います.

于 2012-08-02T23:03:48.867 に答える