OC属性总结

来源:互联网 发布:energy star软件 编辑:程序博客网 时间:2024/04/30 06:28

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>


0 0