黑马程序员技术交流社区
标题:
定义属性时,什么情况使用copy,assign,和retain 。
[打印本页]
作者:
Lin枫
时间:
2014-4-14 12:03
标题:
定义属性时,什么情况使用copy,assign,和retain 。
本帖最后由 Lin枫 于 2014-4-15 08:36 编辑
定义属性时,什么情况使用copy,assign,和retain 。
作者:
罗冠坤
时间:
2014-4-14 12:05
copy 相当于retain,不过要视情况而定,因为有时候需要修改新的副本不影响原来的,而有时候需要影响原来的
retain,是当成员属性是OC对象时设置
assign,是当成员属性时非OC对象的普通类型时设置,比如int ,double等等
作者:
于清扬
时间:
2014-4-14 13:05
本帖最后由 于清扬 于 2014-4-14 13:07 编辑
使用@property定义属性时,使用:
copy 生成的setter方法 release旧值,copy新值,一般用于oc字符串和block
- (void)setName:(NSString *)name
{
if (_name != name) {
[_name release];
_name = [name copy];
}
}
复制代码
retain 生成的setter方法 release旧值,retain新值,用于oc对象
- (void)setDog:(Dog *)dog
{
if (_dog != dog) {
[_dog release];
_dog = [dog retain];
}
}
复制代码
assign 生成的setter方法 直接赋值,用于基本数据类型。特殊的情况下,循环引用的时候,一端用retain,一端用assign.
- (void)setAge:(int)age
{
_age = age;
}
复制代码
作者:
董月峰
时间:
2014-4-14 13:14
;P楼主,我知道你是在 做OC入学测试,哈哈
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2