【发布时间】:2011-11-24 23:22:00
【问题描述】:
我开始为 iOS4 学习和开发,所以我只是跳过了旧的 ivar 声明约定,开始使用纯属性,甚至没有声明 ivar。一切都很顺利,我什至在应用商店发布了我的第一个自制应用。但后来在我的开发公司,人们告诉我,他们仍在使用旧的约定,并用下划线的名称声明 ivars,使用属性并合成它们(参见最后的示例)。他们还说,他们仅在需要外部访问 ivars 时才使用属性,而对于内部访问,他们使用直接 ivars(用于自定义类)。有人告诉我,他们这样做是因为他们遇到了一些奇怪的泄漏,有时会出现在使用自定义类并在 viewDidUnload 中取消它们的属性时(因为将 nil 设置为属性有时不会释放那些 ivar 对象)
只是想知道为什么我在使用属性和综合时要费心使用 ivar 声明来完成所有需要的事情。我什至可以直接使用他们的名字访问 ivars,而无需在 dealloc 中使用 self。那么,是否有人对此有问题,或者你们中的许多人仍然坚持旧的声明约定?
@interface ContactModel : NSObject {
NSString *_firstName;
}
@property (nonatomic, retain) NSString *firstName;
@end
@implementation ContactModel
@synthesize firstName = _firstName;
-(void)dealloc{
[_firstName release];
[super dealloc];
}
@end
还应注意,Apple 在生成主应用程序委托类文件并合成 window=_window 时仍使用旧的声明样式。嗯,目前,我对我应该采取什么约定有点困惑,所以欢迎任何想法:)
【问题讨论】:
标签: iphone objective-c properties