我已经和Objective C一起工作了几个月,感觉我可能知道它的1%,并且理解甚至更少...... 无论如何,我有两个适度流行的游戏,并且每天都在学习更多。
当我第一次开始时,我了解到定义属性的方法是对属性和实例变量使用相同的标识符,如下所示:
code.h:
@interface MyClass : UISomething {
NSString *myPropName;
}
@property (nonatomic, retain) NSString *myPropName;
@end
code.m
@synthesize myPropName;
最近我看到使用了以下内容,其中实例变量的名称与属性不同,然后在实现中将属性设置为实例变量:
code.h:
@interface MyClass : UISomething {
NSString *_myPropName;
}
@property (nonatomic, retain) NSString *myPropName;
@end
code.m:
@synthesize myPropName = _myPropName;
是否有理由不对属性和实例变量使用相同的标识符?
谢谢! Hanaan
答案 0 :(得分:2)
是否有理由不使用相同的 属性的标识符和 实例变量?
不是真的。有些人喜欢使用下划线为实例变量添加前缀的约定。 (对我来说似乎毫无意义。)其他人喜欢更改布尔变量的属性名称:
@synthesize isEmpty = empty;
您可能还希望为实例变量使用较短的标识符,并为属性(audioPlayer = player
)使用更具描述性的名称。最后一个应用程序浮现在脑海中,将变量重命名为协议:
@interface LowLevelAudioPlayer : NSObject <AudioLevelProvider> {…}
@interface Jukebox : NSObject {
LowLevelAudioPlayer *player;
}
@property(readonly) id <AudioLevelProvider> levelMeter;
@synthesize levelMeter = player;
这里重命名变量是有益的,因为您只提供对其中一个方面的访问。