Objective-C Prperty

来源:互联网 发布:php解析json数据 编辑:程序博客网 时间:2024/05/17 22:13

属性:

属性是OC之后出来的新的语法,用来代替setter和getter方法,使用属性可以快速创建setter和getter方法的声明和实现,另外还添加了对实例变量操作的安全处理

使用属性的最终版本的格式:

@property(读写特性,原子特性, 语义特性) 实例变量类型 实例变量名;

然后,系统自动生成变量名为_实例变量名的实例变量,并且会自动生成相应的setter和getter方法的声明以及实现,灰常的方便...

读写特性:(1).readonly,只读:即只能够读取不能修改的实例变量,即只生成getter方法,不生成setter方法.

(2).readwrite,读写:即可以读取和改写的实例变量,生成setter和getter方法.

原子特性:(1).atomic,原子特性:保证线性安全,内部做了安全处理(加锁与解锁),(注:系统默认的是atomic).

(2).nonatomic,非原子性:不保证线性安全.

因为对于setter和getter方法的使用,比较频繁,在一段时间内可能要多次访问,所以使用atomic会非常消耗系统的资源,降低程序的执行效率,使用nonatomic虽然不保证系统安全,但是使用一般情况是安全的,所以对于原子特性,一般是nonatomic的.

语义特性:(1).assign:直接赋值,使用针对于基本数据类型和对象类型.(系统默认的是assign)(注:对于协议的服从类来说,它的实例变量的特性必须是assign)

(2).retain:针对对象类型,引用计数+1.

(3).copy.

另外,如果在.m文件中用:@synthexize 属性名 = _属性名; 则系统会生成对应的setter和getter的实现.

用属性方法简单便利,但是生成的setter和getter方法是私有的,不能在子类和外界使用.要想外界使用setter和getter方法,则需要在.h文件中定义实例变量.

点语法:点语法是一种快速访问setter和getter方法的方式,声明属性默认生成对应的setter和getter方法.所以属性和setter和getter方法都有关联.

对象.属性名  如果在等号左边,意味着调用setter方法,除此以外,都是调用getter方法.



0 0
原创粉丝点击