2010-11-25 61 views
1

我一直在使用Objective C幾個月,現在覺得我可能知道它的1%,並且理解甚至比那更少......無論如何,我有兩個中等流行遊戲出去,每天學習更多。基本目標C定義和合成屬性

當我剛開始時,瞭解到定義性質的方法是使用相同的標識符的屬性和實例變量,如下:

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

有沒有使用相同的 標識符財產和 實例變量的一個原因?

不是。有些人喜歡用下劃線爲實例變量加上前綴。 (似乎毫無意義對我來說)。其他人想改變屬性名稱布爾變量:

@synthesize isEmpty = empty; 

您可能還需要使用更短的標識符實例變量和更具描述性的名稱屬性(audioPlayer = player)。和一個最終的應用程序出現在腦海,重命名組合的變量與協議:

@interface LowLevelAudioPlayer : NSObject <AudioLevelProvider> {…} 

@interface Jukebox : NSObject { 
    LowLevelAudioPlayer *player; 
} 

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

這是有益的重命名變量,你只提供給它的方面之一訪問。