美文网首页ios知识积累
ios - assign retain copy

ios - assign retain copy

作者: 小桃桃 | 来源:发表于2015-01-16 11:23 被阅读309次

NSString *str = [[NSString alloc] initWithString:@"aaa"];

str 分配的地址如下:

str 变量地址: 0x7fff5fbff878 , str 内容地址: 0x100001030

assign

NSString *str2 = [str assign];

str2 和 str 完全相同(变量地址、内容地址),不增加 retainCount

assign一般用于基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char)等等

retain

NSString *str3 = [str retain];

str3 和 str 的变量地址相同,指向相同的内容地址,str 的retainCount增加1

此对象只能用于Object-c对象类型,而不能用于Core Foundation对象。

(基本数据类型 和 CoreFoundation 对象都没有引用计数)

当把对象添加到 数组中时,被添加对象的引用计数+1


copy

NSString *str4 = [str copy];

str4 变量地址: 0x7fff5fbff868 与str 不相同,指向相同的内容地址,str4的

retainCount增加1

一般用于NSString

总结:

assign 不增加retainCount 多个对象共享一个内存块 

retain 指针拷贝(变量地址、内容地址相同) 对象的retainCount+1

copy 内容拷贝(变量地址不同、内容地址相同) 新对象的retainCount +1

相关文章

网友评论

    本文标题:ios - assign retain copy

    本文链接:https://www.haomeiwen.com/subject/eupcxttx.html