首页 > 代码库 > IOS开发复习笔记(3)-ARC
IOS开发复习笔记(3)-ARC
1.ARC
当你自己调用了release或retain语句的时候,ARC有效时编译文件会遇到错误,你可以通过-fno-objc-arc和-fobjc-arc两个编译器标志在混搭中支持ARC和非ARC的代码
如下面编译支持ARC,而文件代码不支持ARC
# if !__has_feature(objc_arc)//this code do not support to ARC-(void) release{//release your var}#endif
在ARC工程中集成非ARC的第三方代码:当使用没有通过ARC编译的第三方框架时,编译库里面的文件需要使用-fno-objc-arc编译开关。Edit->Refactor->convert to Object-c ARC
在非ARC工程中集成ARC代码时:不会遇到编译错误,但可能会面临内存泄露,为避免此类事情的发生,需要使用-fobjc-arc来标记这些通过ARC编译的第三方代码
2.框架中的ARC
1)归零弱引用
弱一用通过持有指针而不关注引用计数的值来避免循环保留,但是当内存(指针指向内存)被销毁后,弱引用指向将是无效内容。销毁内存后在访问指针会导致应用崩溃,归零引用在销毁内存后将指针归零的方法来解决问题。
2)所有权修饰符
ARC会自动帮我们插入retain和release但是我们需要给它一些提示来销毁已分配内存的准确时机,这些提示就是所有权修饰符
- __strong
- __weak
- __unsafe_unretained
- __autoreleasing
前三个可用于属性的声明,属性声明不需要双下划线,默认的所有权修饰符是__strong
- __strong
因为__strong是默认的,所以使用
@property (nonatomic,strong) NSString *someString;//等同@property (nonatomic) NSString *someString;
__strong 等同retain。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。