美文网首页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