关于在iOS中成员变量和属性的选用问题,我们先看以下代码 :
@interface ViewController ()
{
NSString * _name;
}
@property (nonatomic, copy) NSString * name;
@end
私有成员变量的优势 :没有自动生成对应的 getter & setter 方法,在赋值和取值时效率更高一些。适合一些仅供本类内部自己使用的、简单的标识 / 标记等。
属性的话自动生成对应的 getter & setter 方法,可以在赋值和取值时做更多的过滤和初始化,比如:应用中选择城市,并不是每次选择我们都发送全局通知,而是应当在 setter 方法中判断赋值前后的城市是否相同,不同时再发送通知,提高性能。再比如:在 getter 方法中需要进行更多的初始化操作(节耦)、懒加载(延迟加载、预防使用时对象未被初始化、预防重复创建)。