美文网首页IOS开发资料库
关于 assign weak copy retain 的问题

关于 assign weak copy retain 的问题

作者: 哔哩哔哩智能喵 | 来源:发表于2017-02-15 23:27 被阅读17次
    • 关于 assign weak copy retain 的问题

      • 1.assgin的问题

        • 什么时候用assgin:对基本数据类型进行赋值操作时候。

        • 为什么基本数据类型可以用assign,因为基本数据类型一般分配在栈上,栈的内存会由系统自动处理,不会造成野指针。

        • assgin的特点是什么:用assgin修饰的对象在释放后,指针的地址还是存在的,指针没有为nil,会成为野指针。

      • 2.weak的问题

        • 什么时候用weak:weak一般多用于修饰代理,这样可以避免循环引用。

        • weak的特点:weak修饰的对象在释放后,指针地址会置为nil。

      • 3.copy的问题

        • 什么时候用copy:修饰NSString和block

        • 为什么修饰NSString和block用block

          • 修饰NSString:一般情况下,我们都不希望字符串的值跟着赋值的字符串变化,所以一般情况下用NSString用Copy。如果希望字符串的值��跟着赋值的的字符串的值变化,可以使用strong

          • 修饰block:block在创建的时候,它的�内存�是分配在栈上的,而不是堆上,可能随时被回收,他本身的作用域是属于创建的时候的作用域,一旦在创建时候的作用域外面调用block将导致崩溃。通过copy可以把block拷贝到堆,保证block的声明域外使用。在ARC下写不写都行,编译器会自动对block进行copy操作。

          • copy的特点:创建一个新的对象

      • 4.retain的问题:

      • 什么时候用retain:Mrc下对一个对象的引用计数+1的时候

      • retain的贴点:创建一个新的指针,指针拷贝。拷贝的指针引用计数器+1,(被拷贝)旧的指针释放

    相关文章

      网友评论

        本文标题:关于 assign weak copy retain 的问题

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