美文网首页
关于@property你真的了解吗?

关于@property你真的了解吗?

作者: 五月一日的凤梨罐头orz | 来源:发表于2016-06-07 14:47 被阅读84次

这篇博客主要会介绍关于@property的一些关键字用法,以及@property的一些大家并不太会关心但是却很重要的知识点。
相信大家对于@property中assign,strong,weak,copy,nonatomic等关键字的用法已经很了解了,在此再帮大家复习一下。

使用@property配合@synthesize可以让编译器自动实现getter/setter方法,使用的时候也很方便,可以直接使用“对象.属性”的方法调用;如果我们想要“对象.方法”的方式来调用一个方法并获取到方法的返回值,那就需要使用@property配合@dynamic了
使用@dynamic关键字是告诉编译器由我们自己来实现访问方法。如果使用的是@synthesize,那么这个工作编译器就会帮你实现了。

关键字的解释

readonly表示属性是只读的,如果你尝试使用.操作符对其进行写操作,将会得到一个编译错误;
readwrite表示属性是可读可写的,这个是默认操作。
atomic提供对对象的原子操作,保证多线程安全。加上atomic,setter方法会变成这样:
{lock}
if (property != newValue) {
[property release];
property = [newValue retain];
}
{unlock}
strong声明一个对对象的强引用,使对象的引用计数加1,一个对象只有当有强指针指向它,才会被保留在内存中,否则就会被销毁;
weak声明一个对对象的弱引用,不会改变对象的引用计数,在对象被释放时,该弱指针会被自动设置为nil;
assign在ARC环境下,一般用于修饰基础数据类型,直接复制,它不会使对象的引用计数加1;
copy不会改变对象的引用计数,它会新建一个对象的副本,深拷贝,拷贝工作由copy方法执行,此属性只对那些实行了NSCopying协议的对象类型有效。对copy的副本的操作不会影响原对象;
retain只能在MRC环境下使用,作用是使对象的引用计数加1;

retain与copy的区别:

retain将对象的引用计数加1,不会创建新的对象,copy不会改变对象的引用计数,会创建一个新的对象,所以retain是指针拷贝(浅拷贝),copy是内容拷贝(深拷贝)。

retain与assign的区别:

assign是直接赋值,例如给对象a分配了一块内存,把a赋值给b,此时a和b指向的是同一块内存,当a释放这块内存时,b并不清楚这块内存已经被释放,仍然指向这块已经被回收的内存,b此时变为悬垂指针,继续使用会导致程序的crash。
使用retain的好处就是,由于每次进行赋值操作引用计数都会加1,进行释放引用计数都会减1,当引用计数为0的时候,系统才会把这块内存释放掉,保证了内存的正确使用。

@property默认关键字

atomic,assign,readwrite

相关文章

  • 关于@property你真的了解吗?

    这篇博客主要会介绍关于@property的一些关键字用法,以及@property的一些大家并不太会关心但是却很重要...

  • 关于肥胖,你真的了解吗?

    全球人口有将近40%(约19亿人)有超重问题,有13%(约6亿人)有肥胖问题。注意:超重和肥胖不是同一个等量级的!...

  • 关于丁丁你真的了解吗?

    男性的性发育特点单一,在性生理的成熟期,阴茎的变化会很明显。同时阴茎也会变得越来的敏感,还可以通过手淫,来满足自己...

  • 关于时间,你真的了解吗?

    1、人们对时间的感知是不准确的。 例如:农民种菜,在同一时间,用三台摄像机从前、后,左,三个角度拍摄。然后把三段内...

  • 关于优势,你真的了解吗?

    很多时候,人人都在谈优势,谈长板理论。但是很多时候,我们问问身边的人“你的优势是什么呢?”其实你会发现大多数人不太...

  • 关于孤独,你真的了解吗

    “甭管你是有家还有孩子,一个人一辈子,始终是跟自己相处。 自由是什么,自由就是你孤独的站立。 不依恋,不惧怕。 有...

  • 关于叶子,你真的了解吗?

    任何植物都有叶子,大部分为我们熟识的绿色,但是,如果你用心观察,会发现叶片的性状,大小,脉络,等等都不同。甚至,我...

  • 疯了吧!整理师不就是家政阿姨吗?!

    你了解整理师吗? 你知道整理师的日常工作是什么吗? 你适合做整理师吗? 01你真的了解整理师吗 近年来,关于“整理...

  • 你真的了解iOS代理设计模式吗?

    你真的了解iOS代理设计模式吗? 你真的了解iOS代理设计模式吗?

  • 关于祛斑,你真的了解吗?

    色斑是个可怕又可恨的东西,可怕是一旦沾上它,想甩开几近不可能,像502一样,死死地粘住你;可恨是让你白净的皮肤上多...

网友评论

      本文标题:关于@property你真的了解吗?

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