2010-11-25 10 views
1

私は数ヶ月間Objective Cで作業していて、おそらく1%を知っていると感じていて、それよりも理解しています... どちらかといえば、ゲームをして、毎日もっと学習しています。基本的な目的Cプロパティの定義と合成

Iが最初に始めたとき、私は、プロパティを定義する方法は以下のように、プロパティ、インスタンス変数の同じ識別子を使用していたことを学んだ:

code.h:

@interface MyClass : UISomething { 
    NSString *myPropName; 
} 

@property (nonatomic, retain) NSString *myPropName; 
@end 

コード.M

@synthesize myPropName; 

は最近、私はインスタンス変数が異なっプロパティより命名され、その後、プロパティはインスタンス変数Iに設定されている場合に、次は、使用しましたn個実装:

code.h:

@interface MyClass : UISomething { 
    NSString *_myPropName; 
} 

@property (nonatomic, retain) NSString *myPropName; 
@end 

code.m:

@synthesize myPropName = _myPropName; 

プロパティとインスタンス変数に同じ識別子を使用していない理由はありますか?

ありがとうございます! Hanaan

答えて

2

は、プロパティと インスタンス変数に同じ の識別子を使用していない理由はありますか?

実際はありません。インスタンス変数の先頭にアンダースコアを付けるという規約が好きな人もいます。 (私には無意味なようです。)他の人がboolean型変数のプロパティ名を変更したい:

@synthesize isEmpty = empty; 

ます。また、プロパティ(audioPlayer = player)用のインスタンス変数のための短い識別子と、より説明的な名前を使用する場合があります。そして、もう一つ最終的なアプリケーションは、プロトコルとの組み合わせで、変数の名前を変更、頭に浮かぶ:

@interface LowLevelAudioPlayer : NSObject <AudioLevelProvider> {…} 

@interface Jukebox : NSObject { 
    LowLevelAudioPlayer *player; 
} 

@property(readonly) id <AudioLevelProvider> levelMeter; 
@synthesize levelMeter = player; 

ここでは、あなただけのファセットの1へのアクセスを提供しているとして、変数の名前を変更することが有益です。

関連する問題