@property 中的关键字

一、@property(nonatomic,copy) NSString *myName;

其中nonatomic、copy都是关键字,关键字分为三类:

1.    原子性

1.1  atomic(默认):线程安全。
1.2  nonatiomic:可被多线程访问,不安全。在单线程或明确只有一个线程时使用。

2.    访问器控制

2.1  readwrite(默认):

同时拥有setter和getter方法。

2.2  readonly:只有getter方法。

3.    内存管理

3.1  assign(默认):用于值类型,单纯值复制,如int,float,double和CGFloat等。delegate等不存在所有权关系的对象。

3.2  retain:意味着实例变量获取传入参数的所有权。表现在调用setter方法时,会先释放release、然后将参数retain之后传给它。

3.3  strong:类似retain,强引用

3.4  weak:weak跟assign效果类似,但weak在对象回收之后自动设置nil。低版本使用unsafe_unretained代替。

3.5  copy:拷贝一个副本。

二、初始化readonly属性

既然readonly只生成getter方法,那么怎么初始化赋值呢。

如:

@property(nonatomic,readonly)NSString *myName;
@synthesize myName;//需写在@implementation之后。
myName = @”*******”;

或不写@synthesize,直接使用_myName。

通过_myName进行存取的话是不会调用该变量的setter或者getter方法的,声明的readonly也就不会起作用,而通过self. myName调用的话是会调用setter(无效)或者getter方法的,这样readonly也就会起作用。

其实在申明@property时,系统会创建@synthesizemyName = _myName

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值