Effective Objective-C 2.0 第二篇

第六条 理解属性

在平时的开发中会定义一些属性,通常是@property去定义.在书中的第六条中详细的讲解了属性的这一概念,

通常我们定义好了属性就可以直接_去使用,另外有一点什么时候用_和self去使用属性这在第七条中会说明.

然后器是当我们写好了一个属性之后,事实上是OC已经帮我们把"存取方法","获取方法"已经写好了.

在详细的说一下OC区别去Java和C++的不同之处,就是属性.当然我们也可以自己去写getter和setter方法,

这样做的话存在内存的问题,说的简单点就是单一个变量定义的时候,已经给他分配好内存的地址空间了,然后在他前面有添加了一个新的变量,这时候原来的变量的内存空间就变成了新变量所在的地址,那么修改类定义之后就必须从新编译,不然就会出错,大概就是这个意思.当然每种语言都会有处理方法,OC是利用runtime机制,用类对象那个在运行时去查找,随着类的定义而改变.解决了这个问题.还有一种解决方法就是通过存取方法来做.这就是内部封装的属性.

接下来介绍一下@synthesize和@dynamic

做过iOS开发的对于这两个关键字应该不陌生,通过@property去定义的属性,器名称前面会有一个_作为名字,通过@synthesize去修改名字.而@dynamic是告诉编译器不要自动生成器存取方法和实例变量.

属性的特性

原子性:natomic,也叫同步锁.在iOS开发中一般使用nonatomic,因为同步锁造成的形内问题比较大,

读写权限:readwrite:自动生成getter和setter方法,用关键字@synthesize去修饰,readonly仅仅拥有获取方法.

assign.strong,weak,copy,unsafe_unretained这么多特性.这些用法我就不多说了.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容