Objective-C中类属性的 copy, tetain, assign , readonly , readwrite, nonatomic区别

本文详细解析了Objective-C中类属性的copy、retain、assign、readonly、readwrite、nonatomic等关键字的区别及用法,包括它们在不同场景下的表现和注意事项,帮助开发者更好地理解和运用Objective-C的内存管理机制。
摘要由CSDN通过智能技术生成

Objective-C中类属性的 copy, tetain, assign , readonly , readwrite, nonatomic区别

区别:

1.nonatomic:多线程并发访问会提高性能,多线程在并发的时候不需要考虑顺序先后执行,大大的提高性能。默认是atomic(注意:)atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所 以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。

2.assign: 简单赋值,不变引用计数 (assign相当于ARC下的weak)
对基础数据类型 (例如NSInteger)和C数据类型(int, float, double, char, 等)     适用简单数据类型或对指针的弱引用

3.copy引用计数加1,一般是应用字符串(特别是在oc对象修饰符中特别使用copy修饰符,其他oc对象用strong)

4.retain引用计数加1,主要应用于oc对象类型,(retain相当于ARC下的strong)



例子:

1.@property (nonatomicassignint number;

2.@property (nonatomiccopyNSString * myString;

3. @property (nonatomicretainUIView * myView;



总结:

1.oc对象---NSString用copy

2.oc对象--其他对象用strong

2.UI控件--用weak


笔记1:

1.谁alloc+1、谁release

2.retain+1、release

3.new+1、release

4.copy+1、release

5.autoreleasepool、release


笔记2:

1.ARC:automatic reference Counting:自动引用计数


2.在对象被销毁之前,会调用该方法:ARC下,不需要【super

 dealloc】,在非ARC下,该方法中必须有这行代码:[super

 dealloc]


3.计数减1!=释放内存


4.copy和retain区别:

            1.retain对属性的作用:release旧值,retain新值,主要用于oc对象

            2.copy对属性的作用:release旧值,copy新值,主要用

于oc对象的字符串NSString

            3.assign对属性的作用:直接赋值,默认为assign,主要用于非oc对象

            

            1.copy是拷贝一份新的对象;是内容或者地址copy

            2.retain是同一个对象只是计数加1,是指针copy



笔记3:

1.在ARC下使用autoreleasepool用法:

@autoreleasepool

   {

        代码块......;

}



2.在非ARC下:retain和strong没有区别

   在ARC下,都是使用strong,字符串用copy


3.ARC工作原理:自动引用计数,只要没有强指针指向对象,则该对象就会被释放

强指针:默认情况下,所有指针都是强指针,__strong修饰

弱指针:__weak修饰的指针都是弱指针,特点是:只要弱指针指

向的对象被释放,则弱指针会自动被置为nil.









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值