zoukankan      html  css  js  c++  java
  • 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

    1. __strong

    因为__strong是默认的,所以使用

    @property (nonatomic,strong) NSString *someString;
    //等同
    @property (nonatomic) NSString *someString;

    __strong 等同retain。

  • 相关阅读:
    2019 SDN上机第3次作业
    SDN第二次作业
    软件定义网络第一次作业
    软件工程实践第五次作业
    软件工程实践2019第四次作业------原型设计
    2019 SDN上机第7次作业
    2019 SDN上机第6次作业
    SDN课程阅读作业(2)
    软件工程实践个人作业——软件评测
    2019 SDN上机第5次作业
  • 原文地址:https://www.cnblogs.com/keithmoring/p/3864783.html
Copyright © 2011-2022 走看看