0

重複の可能性:
@propertiesを使用する必要があるのはなぜですか?
Objective Cでプロパティを使用するのはいつですか?

私はObjective-cで1年余りプログラミングを行ってきましたが、@propertyと@synthesizeを使用するのは慣例だといつも感じていました。しかし、それらは実際にどのような目的に役立ちますか?それらはクラス間で通信するためだけにありますか?したがって、たとえば、宣言されたクラスのスコープでのみNSMutableDictionaryを使用する場合、省略しても問題ありませんか?

別の質問:

NSMutableDictionaryのプロパティを設定すると、それは保持されますよね?したがって、私のクラスでは、alloc()とinit()を呼び出す必要はありませんか?プロパティを使用するためのルールは何ですか?

4

3 に答える 3

6

しかし、彼らは実際にどのような目的を果たしていますか?

iVarsへのアクセス制御と、表現と基礎となるデータ間の抽象化。

それらはクラス間で通信するためだけにありますか?

いいえ、直接アクセスするのではなく、iVarへのアクセスを制御したい場合、または将来、基になるデータ構造を変更できるが、現在の表現を維持したい場合に使用します。

したがって、たとえば、宣言されたクラスのスコープでのみNSMutableDictionaryを使用する場合、省略しても問題ありませんか?

場合によります。iVarへのアクセスを制御したいですか?直接のiVarではなく、辞書がフェッチされるようにコードを変更することは可能でしょうか。通常、答えはイエスです。

NSMutableDictionaryのプロパティを設定すると、それは保持されますよね?

プロパティの宣言方法によって異なります。

したがって、私のクラスでは、alloc()とinit()を呼び出す必要はありませんか?

あなたはここでずさんな言い回しをしています。プロパティのインスタンスを作成する必要があるかどうかを尋ねていると思います。はい、何らかの方法でプロパティのインスタンスを作成する必要があります。これを行う方法はたくさんあります。

注:メソッドについて話すための規則は、それらの署名を使用することです。alloc()の代わりに、-allocを使用します。

プロパティを使用するためのルールは何ですか?

これについては、ドキュメントを読む必要があります。

于 2012-05-22T12:17:57.267 に答える
1

他の言語と同様に、変数をグローバルまたはパブリックにしたい場合は、パブリックアクセス修飾子を使用します。Objective cでは、他のクラスの別のクラス変数にアクセスする場合、@propertyと@synthesizeを使用します。基本的に、@ synthesizeは、コンパイラがその変数のセッターメソッドとゲッターメソッドを作成する方法です。手動で作成できますが、@synthesizeは使用できません。そのクラスのオブジェクトを作成することにより、他のクラスのプロパティ変数にアクセスできます。保持を使用することにより、それがメモリで行われ、そのコンテナクラスが破棄または解放されなくなるまで存在しないことを明確にします。

于 2012-05-22T12:19:03.360 に答える
0

プロパティは単にあなたの生活を楽にします。

現在、メモリ管理、コードスタイル、および時間の節約の観点から、可能な限り多くのプロパティを使用しています。

何をし@propertyますか?
彼らはゲッターとセッターのメソッドを作成することができます(与えられたパラメーターに依存します)。

通常、インスタンス変数はヘッダーファイルで宣言します(c ++など)。
これで、それをそのままにして、その代わりにインスタンス変数に必要なプロパティを宣言します。

プロパティは複数の引数を取得できます。
通常のobjective-cオブジェクトの場合、ポインタ(*)が必要です。
@property (nonatomic,retain,...)

あなた@synthesizeがそれをするとき、それはゲッターとセッターを作成します。
セッターは、古いオブジェクトを解放したり、変数が新しいオブジェクトを保持したり保持したりするようなことを自動的に行います。
したがって、手動で行う必要はありません(これは非常によくあることです)。それは重要です。
セッターを設定するかどうかを決定するための引数(読み取り専用、読み取り/書き込み)を指定することもできます。
ヘッダーファイルで読み取り専用で宣言し@property、実装ファイルで拡張子(名前のないカテゴリ)を使用してオーバーライドすることもできます。

これをさらに深く掘り下げるには、非常に効果的なアップルデベロッパマニュアルを読んでください。それが少し役立つことを願っています。

Shureは氷山の一角ですが、ほとんどの場合、必要なものはすべて揃っています。

于 2012-05-22T12:26:51.857 に答える