关于 assign weak copy retain 的问题

  • 关于 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,(被拷贝)旧的指针释放

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,745评论 0 6
  • 看你笑 再累的我 也不会流泪 看你哭 再冷的我 也都会慌张 你 就是我 全部的人生
    孤独且灿烂阅读 884评论 0 0
  • 生命中总有很多令人感动的时刻。 朋友的关怀,同事间的互相帮助,邻里之间的相互照应…… 那天在公交车...
    沈姐说说阅读 1,332评论 1 3