2

Objective C のプロパティと ivar について読んだ後、私はまだ XCode の iOS 用の MasterDetail テンプレートと混同しています。

MasterViewController は、DetailViewController のプロパティを宣言します。

@class DetailViewController;

@interface MasterViewController : UITableViewController

@property (strong, nonatomic) DetailViewController *detailViewController;

@end

オブジェクトの配列の ivar:

@interface MasterViewController () {
    NSMutableArray *_objects;
}
@end

なぜそのようになっているのですか?これら2つのものが異なる方法で宣言されている理由がわかりません。ありがとう。

4

2 に答える 2

2

何かを " property" として宣言すると、他のオブジェクトがそれにアクセスして操作できるようになります。上記の場合、" detailViewController" をプロパティとして MasterViewController に追加すると、他のオブジェクトが DetailViewController が公開するメソッドとプロパティにアクセスして操作できるようになります。

" _objects" 変数は MasterViewController の内部 (またはプライベート) です。

于 2013-03-17T18:30:08.877 に答える
2

Apple のドキュメントは概して優れています。Apple のテンプレートは... 時には少し挑戦的です。また、言語が改善されるにつれて更新が遅くなる場合もあります (または不規則に更新されます)。配列はobjects、実装宣言された ivar ではなく、実際にはプライベート プロパティである必要があります。いずれにせよ、これを読みすぎないでください。

ビュー コントローラーはデータを保持するべきではないことに注意してください。モデルクラスから取得する必要があります(テンプレートは提供しません)。これの一部は、テンプレートをより簡単に使用できるようにするためのものです (これらは実際にはサンプル コードではなく、テンプレートです)。奇妙なコードのいくつかは、テンプレート エンジンの制限によるものです。(クラス名に接頭辞を付ける必要があると言われていましたが、以前はクラス名に接頭辞を付けることができませんでした。非常に面倒でした。)

残念ながら、コード例で何かを見ても、必ずしもそれが正しいコーディング方法であるとは限りません。Apple のサンプル コードの多くは、製品コードではまったく不適切です (ほとんどのサンプルには、適切なモデル クラスが欠けているか、エラーを正しく処理できません)。繰り返しになりますが、これはサンプル コードの性質のようなものです。コーディング ガイドラインに注目してください。テンプレートや例から学ぶよりもはるかに便利です。

于 2013-03-17T18:30:39.367 に答える