3

Objectice-c を学習していますが、インスタンス変数の値を 2 つの方法で設定できることに気付きました

@interface Foo : NSObject
  @property int x;
  -(void)print;
@end

@implementation Foo

 -(void)print
 {
   [self setX:10] // first way
   x = 10; // second way 
 }
@end

私は個人的には最初の方法を好みます。プロジェクトで最初の方法を使用しても問題ありませんか?

4

1 に答える 1

1

次の 2 つの方法で変数にアクセスできます。

セッターまたはゲッターを self で使用する。:

self.x = 10;
[self setX:10]

どちらも同等ですが、Apple では setter を self で使用することをお勧めしています。

または ivar に直接アクセスします。ivar の名前は、合成方法によって異なります。デフォルトの合成を使用する場合 (または自分で合成しない場合) は、次のようになります。

_x = 10;

あなたの例では、2番目の方法は ivar に直接アクセスすることであり、最初の方法はセッターを使用することです(self.x = 10と同じ)、

最初の方法 (self を使用するか、setter を使用する) をお勧めします。これは、メモリの問題を処理し、以前の値を解放し、必要に応じてスレッドから保護するためです。また、self を使用する方が快適です。セッターを呼び出すよりも。

initメソッドを使用している場合にのみ ivar を使用し、残りの場合はセッターを使用します。

于 2013-07-10T14:44:02.500 に答える