欢迎来到天天文库
浏览记录
ID:8808745
大小:28.46 KB
页数:9页
时间:2018-04-08
《object-cproperty的使用方法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、@property(nonatomic,retain)NSString*aString;property:属性的定义,相当于C语言的setter和getter方法。assign:简单的赋值,不更改索引的计数。copy:建议一个索引计数为1的对象,然后释放旧对象;retain:释放旧对象,将旧对象的值赋予新对象,再增加新对象的索引计数1。 针对具体的数据类型在属性定义应该这样选择:使用assign:对基础的数据类型,比如NSInterger,CGFloat和C数据类型(int,float,double,char等
2、等)。使用copy:针对NSString;使用retain:针对NSObject及其子类。使用nonatomic:单线程,防止在写未完成的时候被另外一个线程读取,造成数据读取出错。使用release:基于一般的初始化,使用alloc和init关键词初始化的,要在恰当的地方release掉,全局变量在dealloc方法里面release,常规变量在不需要的时候就要释放掉。简介:property组合了新的预编译指令和新的属性访问器语法。1、@property表示声明了对象的一个属性。例如:@propertyfloa
3、tsmsHandling;表示某个类的对象具有了一个float类型的名为smsHandling的属性。property自动生成了-setsmsHandling和-getsmsHandling两个方法来操作属性.2、@synthesize表示创建该属性的访问器(Ps: -setsmsHandling和-getsmsHandling两个方法是在这句存在的情况下才开始由编译器输出的).3、property支持点访问,比如:(假设拥有上面属性的类为A)A.smsHandling=0.3;4、property的扩展功能:
4、(以上介绍的是property的基本用法) 我们还可以生命具有其他属性的@property,用来表达我们希望特性具有某种行为的确切意愿。 @property(copy)NSString*name;//通过想name这个属性添加copy的方法,使编译器和类的使用者知道name对象将被复制。 关于属性的括号内的扩展支持如下: 1,getter=getterName,setter=setterName,设置setter与getter 的方法名 2,readwrite,readonly,设置可供访问
5、级 2,assign,setter方法直接赋值,不进行任何retain操作,为了解决原类型与环循引用问题 3,retain,setter方法对参数进行release旧值再retain新值,所有实现都是这个顺序(CC上有相关资料) 4,copy, setter方法进行Copy操作,与retain处理流程一样,先旧值release, 再Copy出新的对象, retainCount为1. 这是为了减少对上下文的依赖而引入的机制. 5,nonatomic, 非原子性访问,不加同步,多线程并发访问
6、会提高性能.注意,如果不加此属性,则默认是两个访问方法都为原子型事务访问.锁被加到所属对象 以上的使用方式:·使用assign:对基础数据类型(NSInteger,CGFloat)和C数据类型(int,float,double,char,等等)·使用copy:对NSString·使用retain:对其他NSObject和其子类 注:retain的实际语法为:-(void)setName:(NSString*)newName{if(name!=newName){[namerelease];name=[ne
7、wNameretain];//name’sretaincounthasbeenbumpedupby1}}什么是property?是一种代码生成机制,能够生成不同类型的getter/setter函数,特别是如果你想要用点(.)操作符号来存取变量的话,你就能必须使用property。如何使用?用法是固定的,注意下property后面小括号了跟的参数列表,nonatomic代表非原子性,既不支持多线程的同步,mac上可以根据具体情况考虑,IPhone上就加上把,retain代表对setter的对象加上一个retain
8、操作,同时也会release原有的object,copy顾名思义就是copysetter中参数的对象。看下面的例子:代码 @interfaceEngine:NSObject{}@end@implementationEngine-(NSString*)description{ return(@"engine");}@end@interfaceTier:NSObject{}@end@i
此文档下载收益归作者所有