zoukankan      html  css  js  c++  java
  • 属性和关联对象整理

    1、OC常用属性汇总

    atomic:生成的setter、getter操作为原子操作,为系统默认,消耗大量资源,执行性能低,但是是线程安全的。

    nonatomic:生成的setter、getter操作是非原子操作,推荐手动设置为nonatomic属性,执行性能高,多线程容易出现异常。

    assign:用来修饰值类型,这里的值类型我们可以理解为基础数据类型(NSInteger)和C语言类型数据(int,float,double,char,bool)。不会更改引用计数。

    retain:释放旧对象,并使传入的新对象引用计数+1。只能用于NSObject及其子类。

    strong:强引用,会将对象的指针指向新的地址,并持有一个新对象,这个新对象的引用计数+1。

    weak:弱引用,只是引用属性的指针,而不持有属性,属性的引用计数不会+1。和assign类似,但是不同的是,当指向的对象被释放后,weak会被自动置空,而assign不会置空,所以会导致野指针出现,所以,在声明delegate的时候使用weak,当使用assign修饰的时候,需要手动给delegate置空。

    copy:复制,cpoy只能修饰遵守NSCoping协议的类,copy的作用是在内存上开辟出一片新的空间,然后将调用者复制进去,这样对于调用者而言,引用计数是不变的。但是对于一些不可变类型,如:NSString、NSArray、NSDictionary、NSSet之类,copy并不会在内存上开辟新的空间,而是为调用者的引用计数+1,这里等同于retain。

    readwrite: 对象是可读可写,系统自动生成属性的setter和getter方法,及下划线开头的成员变量。

    readonly:对象是只读属性,系统自动生成一个getter方法,及下划线开头的成员变量。

     retain是指针的复制,copy是内容的复制

    用strong修饰OC对象以及NSString和Block , 没添加到父控件上的控件

    用weak修饰已经被添加到父控件上的控件 以及 代理对象

    用assign基本数据类型、枚举、结构体(非OC对象) class类型

    用copy修饰一种情况下的NSString-->不确定赋值过程中用的是可变还是不可变字符串

  • 相关阅读:
    EFCore
    PS-邮件发送异常信息
    python-Django
    Autofac
    swagger
    查看哪个程序占用了端口
    SQL SERVER-系统数据库还原
    破解root密码
    WebApi路由
    async,await.task
  • 原文地址:https://www.cnblogs.com/shizhiliblog/p/8288326.html
Copyright © 2011-2022 走看看