属性
2015-08-31 09:23
253 查看
摘自:
《Effcitive Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法》
第6条:理解“属性”这一概念
// 属性
@property (nonatomic, strong, readwrite) NSNumber *cumulativeInterest;
等价于
// 合成方法:用于指定属性对应的实例变量的名字,通常用属性名前面加下划线作为实例变量名
// 如果重写存取方法,那同时也需要重写合成方法,否则存取方法不知道实例变量的名字,就会提示找不到 _cumulativeInterest 变量
@synthesize cumulativeInterest = _cumulativeInterest;
// gerter 取方法
- (NSNumber *)cumulativeInterest {
return _cumulativeInterest;
}
// setter 存方法
- (void)setCumulativeInterest:(NSNumber *)cumulativeInterest {
_cumulativeInterest = cumulativeInterest;
}
strong:强属性,“拥有关系”,强表示保持对这个的存储,Objective-C会追踪每一个指向堆中对象的强指针,只要有一个强指针存在,就会把其留在堆中;一旦无强指针指向此对象,会立即释放内存;
这种内存管理方法称作引用计数(Reference Counting),有别于垃圾收集(Garbage Collector)
weak:弱属性,“非拥有关系”,弱指针表示有一个指针指向堆中的这个对象,只要还有强指针指向它,就将其留在堆中;一旦无强指针指向此对象,内存就会释放,同时这个弱指针,会被设为nil;
assign:常用于CGFloat、NSInteger等纯量类型(scalar type)
copy:类似strong ,“拥有关系”,常用于NSString等类型
建议:
在读取实例变量时,采用直接方法的方式(取:实例变量)
在设置实例变量时,采用属性的方式(存:属性)
特例:当用“惰性初始化”(lazy initialization)时,需要用属性来访问,否则实例变量永远不会初始化
《Effcitive Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法》
第6条:理解“属性”这一概念
// 属性
@property (nonatomic, strong, readwrite) NSNumber *cumulativeInterest;
等价于
// 合成方法:用于指定属性对应的实例变量的名字,通常用属性名前面加下划线作为实例变量名
// 如果重写存取方法,那同时也需要重写合成方法,否则存取方法不知道实例变量的名字,就会提示找不到 _cumulativeInterest 变量
@synthesize cumulativeInterest = _cumulativeInterest;
// gerter 取方法
- (NSNumber *)cumulativeInterest {
return _cumulativeInterest;
}
// setter 存方法
- (void)setCumulativeInterest:(NSNumber *)cumulativeInterest {
_cumulativeInterest = cumulativeInterest;
}
strong:强属性,“拥有关系”,强表示保持对这个的存储,Objective-C会追踪每一个指向堆中对象的强指针,只要有一个强指针存在,就会把其留在堆中;一旦无强指针指向此对象,会立即释放内存;
这种内存管理方法称作引用计数(Reference Counting),有别于垃圾收集(Garbage Collector)
weak:弱属性,“非拥有关系”,弱指针表示有一个指针指向堆中的这个对象,只要还有强指针指向它,就将其留在堆中;一旦无强指针指向此对象,内存就会释放,同时这个弱指针,会被设为nil;
assign:常用于CGFloat、NSInteger等纯量类型(scalar type)
copy:类似strong ,“拥有关系”,常用于NSString等类型
建议:
在读取实例变量时,采用直接方法的方式(取:实例变量)
在设置实例变量时,采用属性的方式(存:属性)
特例:当用“惰性初始化”(lazy initialization)时,需要用属性来访问,否则实例变量永远不会初始化
相关文章推荐
- 20140517随感
- C、C++基础知识一
- uval 6425 Intercity
- CentOS 7 上面的samba共享有问题
- Cheatsheet: 2015 08.01 ~ 08.31
- 使用操作系统命令来trace监听
- Leetcode # 169 Majority Element
- java中四种引用类型
- XML 元素 http://blog.csdn.net/chaiyu2002/article/details/5967186
- 互联网十三五规划出台在即 信息基础建设可望撬动投资两万亿
- hdu 5424 回溯+并查集判断连通性
- win7设置虚拟wifi
- 【mysql】Mysql数据库备份和按条件导出表数据
- 2014联通见习感悟
- 高效Linux之统计文件数量
- 图片的二次采样
- Windbg+Vmware驱动调试
- 浅谈ThreadPool 线程池
- Social Emotional Computing -情感模式与价值变化
- linux--多种包管理工具使用和区别(转)