@property 后面可以有哪些修饰符

 我来答
Ms帽儿
2015-07-22 · TA获得超过1092个赞
知道大有可为答主
回答量:1223
采纳率:0%
帮助的人:1707万
展开全部
 1.读写性修饰符:readwrite | readonly
  readwrite:表明这个属性是可读可写的,系统为我们创建这个属性的setter和getter方法。
  readonly:表明这个属性只能读不能写,系统只为我们创建一个getter方法,不会创建setter方法
  2.setter相关修饰符:assign | retain | copy
  setter相关的修饰符表明setter方法应该如何实现
  assign:表示直接赋值,用于基本数据类型(NSInteger和CGFloat)和C数据类型(如int, float, double, char等)另外还有id类型,这个修饰符不会牵涉到内存管理。但是如果是对象类型,使用此修饰符则可能会导致内存泄漏或EXC_BAD_ACCESS错误
  retain:针对对象类型进行内存管理。如果对基本数据类型使用,则Xcode会直接报错。当给对象类型使用此修饰符时,setter方法会先将旧的对象属性release掉,再对新的对象进行一次赋值并进行一次retain操作
  copy:主要用在NSString类型,表示复制内容。
  系统默认属性是assign。retain是指针的复制,copy是内容的复制
  3.原子性修饰符:atomic | nonatomic
  atomic:表示是线程安全的。
  nonatomic:表示是非线程安全的,使用此属性性能会提高一些。
  系统默认是atomic
  4.getter和setter修饰符
  @property(getter = getMethodName, setter = setMethodName) Object *obj;
  这两个属性修饰符用于设置自定义生成的getter和setter方法名,使用之后将不再使用系统默认的setter和getter方法名。

  在@property修饰符中可以出现多个修饰符,分别用逗号分隔,但是,在上述修饰符中,1,2,3组中的属性分别之恩那个出现一个,只有4中可以同时出现。

  Xcode4.2(iOS sdk4.3和以下版本)和以前的版本用retain和assign
  Xcode4.3(iOS 5和以上版本)或之后有了ARC用strong和weak
  assign:用于非指针变量。用于基础数据类型(如NSInteger, CGFloat)和C数据类型(int, float, double, char等), 另外还有id类型。
  记住:前面不需要加*的就用assign
  retain:用于指针变量。一般用于字符串(NSString, NSMutableString), 数组(NSMutableArray, NSArray),字典对象,视图对象(UIView),控制器对象(UIViewController)等
  strong类似于retain,weak类似于assign

  最简单的记忆:
  使用assign:对基础数据类型(如NSInteger, CGFloat)和C数据类型(int, float, double, char等), 另外还有id类型
  使用copy:对NSString类型
  使用retain:对其它NSObject和其子类
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式