OC属性总结

本文详细解析了Objective-C中的属性与点语法的使用规范、声明与实现,包括setter和getter方法的使用,属性的声明和实现,以及属性的三大特性(读写特性、原子性特性和语义特性)。同时介绍了点语法的使用方式,以及属性的合成语法如何快速创建setter和getter的声明和实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1。setter和getter方法的使用规范
setter方法的作用 :为单一的实例变量赋值
 setter 方法规范写法:'-'号方法,无返回值,名字以set开头+要设置的变量的实例变量名(首字母大写):(setter方法有且只有一个参数)+参数的类型(和实例变量的类型相同)+参数名(和实例变量名相同)
 getter方法的作用:获取单一实例变量的值
 getter方法的明明规范:'-'方法,有返回值(返回值类型和实例变量的类型相同),方法名直接和实例变量名相同,无参数</span>

2.属性的声明和实现
(1)属性的声明</span><pre name="code" class="objc"><span style="font-size:24px;">@synthesize 属性的实现部分,实现属性自动生成的setter以及getter方法,
 name 属性名,指定要实现哪一个属性生成的setter以及getter方法,
 _name,指定setter以及getter方法,内部所要操作的实例变量
如果指定的实例变量没有定义,系统会自动生成,但是生成的实例变量是私有的,子类不能直接访问
如果实例变量想让子类访问,那在.h文件里必须定义实例变量
如果未指定setter以及getter内部所要访问的实例变量时,系统会自动生成一个和属性名一样的实例变量
@synthesize name = _name, age = _age , gender = _gender , height = _height, weight = _weight;//(合成属性)
如果对于setter和getter方法,我们实现了,系统就不会再自动实现
如果在.m文件中未通过@synthesize对属性进行合成,系统会自动生成,只不过此时系统默认的setter和getter方法内部所操作的实例变量是_属性名</span>
属性是OC2.0之后出来的新的语法,用来代替setter和getter方法,使用属性可以快速创建setter和getter的声明,setter以及getter方法的实现,另外还添加了对实例变量操作的安全处理。@property用来定义属性,NSString *属性的类型(和实例变量的类型相同) name:属性名(和实例变量名相同)(2)属性的实现如果将@synthesize省略,并且我们自己实现setter和getter时,系统就不会生成对应的setter以及getter方法,还有实例变量如:/*@synthesize gender = _gender;@synthesize age = _age;@synthesize height = _height;@synthesize weight = _weight;*/ //可有可无

3.属性的三大特性


第一大特性:读写特性
 (1)readonly:告诉编译器,属性在自动生成方法时,只会生成getter方法,不会生成setter方法。
 (2)readwrite:告诉编译器,属性在自动生成方法时,既要生成setter方法,也要生成getter方法,系统默认的读写特性。
 (3)setter = aa:告诉编译器,在自动生成setter时,setter方法的方法名为指定的名字aa:,不采用默认的。
 (4)getter = bb告诉编译器,在自动生成getter方法时,getter方法的方法名为bb,不采用默认的
 第二大特性:原子性特性
 (1)nonatomic:非原子性,不保证线程安全。
 因为对于setter以及getter方法的使用,比较频繁,在一段时间内可能要多次访问,所以atomic会非常消耗系统资源,降低程序的执行效率,使用nonatomic虽然不保证线程安全,但是一般情况下都是安全的,所以对于原子特性,使用nonatomic
 (2)atomic:原子特性,保证线程安全,内部做了安全处理(加锁与解锁),系统默认的原子特性
 第三大特性:语义特性
 (1)assign:直接赋值,使用针对于基本的数据类型,也可针对于对象类型。系统默认的语义特性
 (2)copy:针对于对象类型,并且要服从NSCopy协议的对象才可以。会赋值出一个新的对象,拥有新的对象所有权(引用计数+1)(先暂时这样理解)
 (3)retain:针对于对象类型,会造成对象的引用计数+1
 */
</span>

点语法的使用
点语法,是一种快速访问setter以及getter方法的方式,声明属性默认生成对应的setter以及getter方法,所以属性和setter和getter方法,都有关联
        对象.属性名---如果在等号的左边,意味着调用setter方法,除此之外,都是调用getter方法</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值