zoukankan      html  css  js  c++  java
  • 黑马程序员___OC__@property和ARC

    @property和ARC

    @property和ARC都是编译器特性,系统会帮我们自动生成代码

    property参数

    1.set方法内存管理相关的参数

      retain : release旧值,retain新值(适用于OC对象类型)

      assign : 直接赋值(默认,适用于非OC对象类型)

      copy   : release旧值,copy新值

     2.是否要生成set方法

      readwrite : 同时生成setter和getter的声明、实现(默认)

      readonly  : 只会生成getter的声明、实现

     3.多线程管理

      nonatomic : 性能高 (一般就用这个)

      atomic    : 性能低(默认)

     4.setter和getter方法的名称

      setter : 决定了set方法的名称,一定要有个冒号 :

      getter : 决定了get方法的名称(一般用在BOOL类型)

    ARC

    即自动引用计数器,全名是Automatic Reference Counting,简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。

    该机能在 iOS 5/ Mac OS X 10.7 开始导入,利用 Xcode4.2 可以使用该机能。简单地理解ARC,就是通过指定的语法,让编译器(LLVM 3.0)在编译代码时,自动生成实例的引用计数管理部分代码

    引用关键字

    指针分2种:

     1 强指针:默认情况下,所有的指针都是强指针 __strong

     2 弱指针:__weak

    ARC的判断准则:只要没有强指针指向对象,就会释放对象

    ARC特点

     1 不允许调用release、retain、retainCount

     2 允许重写dealloc,但是不允许调用[super dealloc]

     3 @property的参数

      1> strong :成员变量是强指针(适用于OC对象类型)

      2> weak :成员变量是弱指针(适用于OC对象类型)

      3> assign : 适用于非OC对象类型

     4 以前的retain改为用strong

    __weak Person *p = [[Person alloc] init]

    表示定义了一个被弱指针指向的对象,在ARC中一创建出来就会被回收,错误的写法

    循环引用

    当两端循环引用的时候,解决方案:

    ARC

     1端用strong,另1端用weak

    非ARC

     1端用retain,另1端用assign

  • 相关阅读:
    分享一下我珍藏的各种资料。
    JEditorPane中html文档中文乱码解决
    ubuntu恢复rm -rf误删文件
    MBR与分区表备份与恢复
    ubuntu tab命令补全失效
    selinux理解1-selinux介绍
    Mac-Xcode统计整个项目代码行数
    Mac清理空间-Xcode-删除相关文件
    # iOS开发
    Charles问题总结-最新版4.5.6
  • 原文地址:https://www.cnblogs.com/jia694600474/p/4009921.html
Copyright © 2011-2022 走看看