美文网首页iOS 开发
@property后面有哪些修饰符?

@property后面有哪些修饰符?

作者: js_huh | 来源:发表于2016-07-10 14:27 被阅读34次

1,读写性修饰符(访问权限):readwrite | readonly
readwrite - 默认, 可读可写(系统自动创建getter 和 setter 方法)
readonly - 只读,系统只会生成 getter方法!

2,原子性修饰符(线程安全):  nonatomic | atomic  
atomic - 默认,线程安全
    1.atomic原子性指的是一个操作不可以被CPU中途暂停,然后再调度。即不能被中断,要么就执行完,要么就不执行
    2.atomic是自旋锁,当上一线程没有执行完毕的时候(被锁住),下一个线程会一直等待(不会进入睡眠状态),当上个线程任务执行完毕,下一线程立即执行。它区别于互斥锁,互斥锁在等待的时候,会进入睡眠状态,当被上一线程执行完毕后,会被唤醒,然后再执行。
    3.atomic只给setter方法上锁,getter不会加锁
    4.atomic需要消耗大量的资源,执行效率低!
nonatomic - 线程不安全,但是效率高

3, 内存管理(ARC):assign | retain | copy | strong | week |
assign - 默认, 表示直接赋值!
适用于基本数据类型(NSInteger和CGFloat) ,还有id类型和C的数据类型(int,float, double, char...).
这个修饰符不会牵涉到内存管理!但是如果是对象类型,使用此修饰符则可能会导致内存泄漏或EXC_BAD_ACCESS错误!
retain - 指针拷贝(指针拷贝后,地址不变,内容不变,引用计数器加1!,适用NSObject和其子类)
copy - 内容拷贝(内容被拷贝后,内存中会有两个存储空间存储相同的内容,指针不是同一个地址!NSString)
strong - 强引用(强引用,只有OC对象才能够使用该属性,它使对象的引用计数加1,它指向的是同个地址)
week - 弱引用(不会使对象的引用计数器加1)代理必须是weak,因为代理一般都是指向控制器,会造成循环引用,无法释放,造成内存泄露

4,getter和setter修饰符
这两个属性修饰符用于设置自定义生成的getter和setter方法名!

关于weak 与assign区别:
在ARC,出现循环引用的时候,必须有一端使用weakweak修饰的对象销毁的时候,指针会自动设置为nil而assign不会,assign可以用于非OC对象,而weak必须用于OC对象

相关文章

  • @property后面有哪些修饰符

    @property后面有哪些修饰符 1.线程安全的 2.访问权限的 3.内存管理(ARC) 4.内存管理(MRC)...

  • @property后面有哪些修饰符?

    1,读写性修饰符(访问权限):readwrite | readonlyreadwrite - 默认, 可读可写(系...

  • 临时仓库

    @property中有哪些属性关键字?/ @property 后面可以有哪些修饰符? nonatomic atom...

  • #runtime源码笔记#

    property有哪些修饰符,它们的实现原理是什么 首先回答题目的问题,property的修饰符有nonatomi...

  • 18.@property中有哪些属性关键字?/ @propert

    @property中有哪些属性关键字?/ @property 后面可以有哪些修饰符? 属性可以拥有的特质分为四类:...

  • 无标题文章

    1、@property 后面可以有哪些修饰符? 1.读写性修饰符:readwrite | readonly rea...

  • 面试题

    1.@property 后面可以有哪些修饰符?/@property中有哪些属性关键字?属性可以拥有的特质分为四类:...

  • ios知识点总结(一)

    基础 1. @property 后面可以有哪些修饰符? 原子性--- nonatomic 、atomic 在默认情...

  • iOS基础面试题及答案

    考察一个面试者基础咋样,基本上问一个 @property 就够了: @property 后面可以有哪些修饰符?答 ...

  • iOS基础

    @property 后面可以有哪些修饰符? 1.线程安全的: atomic, nonatomic2.访问权限的: ...

网友评论

    本文标题:@property后面有哪些修饰符?

    本文链接:https://www.haomeiwen.com/subject/efldjttx.html