- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Object-cproperty的使用方法
@property(nonatomic,retain) NSString *aString;property:属性的定义,相当于C语言的setter和getter方法。assign:简单的赋值,不更改索引的计数。copy:建议一个索引计数为1的对象,然后释放旧对象;retain:释放旧对象,将旧对象的值赋予新对象,再增加新对象的索引计数1。?针对具体的数据类型在属性定义应该这样选择:使用assign:对基础的数据类型,比如NSInterger,CGFloat和C数据类型(int,float,double,char等等)。使用copy:针对NSString;使用retain:针对NSObject及其子类。使用nonatomic:单线程,防止在写未完成的时候被另外一个线程读取,造成数据读取出错。使用release:基于一般的初始化,使用alloc和init关键词初始化的,要在恰当的地方release掉,全局变量在dealloc方法里面release,常规变量在不需要的时候就要释放掉。简介: property组合了新的预编译指令和新的属性访问器语法。1、@property 表示声明了对象的一个属性。例如: @property float smsHandling; 表示某个类的对象具有了一个float类型的名为smsHandling的属性。property自动生成了 -setsmsHandling 和 -getsmsHandling两个方法来操作属性.2、@synthesize 表示创建该属性的访问器(Ps:?-setsmsHandling 和 -getsmsHandling两个方法是在这句存在的情况下才开始由编译器输出的).3、property支持点访问,比如:(假设拥有上面属性的类为A)A.smsHandling = 0.3 ;4、property的扩展功能:(以上介绍的是property的基本用法)? ? ?我们还可以生命具有其他属性的@property,用来表达我们希望特性具有某种行为的确切意愿。? ? ?@property (copy) NSString * name;//通过想name这个属性添加copy的方法,使编译器和类的使用者知道name对象将被复制。? ? ?关于属性的括号内的扩展支持如下:? ? ?1,getter=getterName,setter=setterName,设置setter与getter?的方法名? ? ?2,readwrite,readonly,设置可供访问级?? ? ?? ? ?2,assign,setter方法直接赋值,不进行任何retain操作,为了解决原类型与环循引用问题? ? ?3,retain,setter方法对参数进行release旧值再retain新值,所有实现都是这个顺序(CC上有相关资料)? ? ?4,copy,?setter方法进行Copy操作, 与retain处理流程一样, 先旧值release,?再Copy出新的对象,?retainCount为1.?这是为了减少对上下文的依赖而引入的机制.? ? ?5,nonatomic,?非原子性访问, 不加同步, 多线程并发访问会提高性能. 注意, 如果不加此属性, 则默认是两个访问方法都为原子型事务访问. 锁被加到所属对象? ? ?以上的使用方式:使用assign: 对基础数据类型(NSInteger,CGFloat)和C数据类型(int, float, double, char, 等等)使用copy:对NSString使用retain:对其他NSObject和其子类? ? ?注:retain的实际语法为:-(void)setName:(NSString*)newName {if(name != newName){[name release]; name =[newName retain];// name’s retain count has been bumped up by 1}}什么是property?是一种代码生成机制,能够生成不同类型的getter/setter函数,特别是如果你想要用点(.)操作符号来存取变量的话,你就能必须使用property。如何使用?用法是固定的,注意下property后面小括号了跟的参数列表,nonatomic代表非原子性,既不支持多线程的同步,mac上可以根据具体情况考虑,IPhone上就加上把,retain代表对setter的对象加上一个retain操作,同时也会release原有的object,copy顾名思义就是copy setter中参数的对象。看下面的例子:代码?@interface Engine : NSObject{}@end@implementation Engin
文档评论(0)