在objective-c 中通过“propertyname”和“self.propertyname”访问属性有什么区别?您能否在答案中涵盖:
该场景的假设可能基于以下几点:
头文件
@interface AppointmentListController : UITableViewController {
UIFont *uiFont;
}
@property (nonatomic, retain) UIFont *uiFont;
执行
- (void)viewDidLoad {
[super viewDidLoad];
uiFont = [UIFont systemFontOfSize:14.0];
//VERSUS
self.uiFont = [UIFont systemFontOfSize:14.0];
谢谢
最佳答案
使用 propertyname
只是访问实例变量。您负责对其内容进行自己的内存管理;不会为您执行任何保留或释放。
使用 self.propertyname
通常使用访问器。如果您使用 @synthesize
,则生成的访问器将按照您的 @property
行中指定的方式处理内存管理(您给出的示例使用 retain
,因此将在为 self.propertyname
设置新值时执行保留)。您还可以编写自己的访问器方法,根据需要进行管理。
Memory Management Programming Guide 中有更完整的解释。这种情况下的最佳实践通常是使用 @property
和 @synthesize
来处理你的变量,然后使用 self.propertyname
访问器来减少你自己的内存管理负担。该指南还建议您避免实现自定义访问器(即使用 @property
而不使用 @synthesize
)。
关于iphone - 在objective-c中通过 "propertyname"和 "self.propertyname"访问属性的区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5251600/