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

你可能感兴趣的:(关于 assign weak copy retain 的问题)