OC属性property使用


 .setter方法的作用:为单一的实例变量赋值

setter 方法规范写法: -号方法,无返回值,名字以set开头 + 要设置的变量的实例变量名(首字母要大写):(setter方法有且只有一个参数) + 参数的类型(和实例变量类型相同) + 参数名(实例变量名相同)

 .getter方法的作用:获取单一实例变量的值.

 getter方法的规范写法:-号方法,有返回值(返回值类型和实例变量类型相同)



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

@property用来定义属性,NSString *属性的类型(和实例变量类型相同)name属性名(和实例变量名相同)

属性的特性:读写特性

(1)readonly:告诉编译器,属性在自动生成方法时,只会生成getter方法,不会生成setter方法.

(2)readwrite(默认的):告诉编译器,属性在自动生成方法时,既要生成setter方法也要生成getter方法,系统默认的读写特性

(3)setter = aa;告诉编译器,当自动生成setter方法时,setter方法的方法名指定的名字aa;不采用默认的特性.

(4)getter = bb;告诉编译器,当自动生成getter方法时,getter方法的方法名指定的名字bb;不采用默认的特性.


第二大特性:原子性特性

(1)atomic:原子特性,保证现场呢个安全,内部做了安全处理(加锁和解锁),系统默认为原子特性'

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

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


第三大特性:语义特性

(1)assign:直接赋值,使用与基本数据类型.系统默认的语义特性

(2)copy:针对于对象类型,并且要服从NSCopying协议的对象才可以.会复制出一个新的对象,拥有新的对象的所有权.(引用计数+ 1).

(3)retain:针对于对象类型,会造成对象的引用计数+1.



 @synthesize 属性的实现部分,实现属性自动生成的setter以及getter方法.

 name 属性名 ,指定要实现哪一个属性生成的setter以及getter方法

 _name,指定settergetter方法内部所要操作的实例变量

 



如果指定的实例变量没有定义,系统会自动生成指定的实例变量,但是生成的实例变量是私有的,子类不能直接方法.

如果实例变量像让子类访问,那在.h文件必须定义实例变量.

* 如果未指定settergetter方法内部所要访问的实例变量时,系统会自动生成和属性名一样的实例变量.

 *如果对于settergetter方法,如果我们自己实现了,系统就不会自动生成了.

 *如果在.m文件中为通过@synthesize对属性进行合成,系统会自动合成,只不过此时系统默认的settergetter方法内部所操作的实例变量

 

 

如果将@synthesize省略,并且我们自己实现setter以及getter方法时,系统就不会生成对应的setter以及getter,还有实例变量.


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


对象.属性名---如果在等号左边,意味着调用setter方法,初次情况外.都是调用getter方法


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值