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