@property (nonatomic, retain)
2015-12-29 16:38
447 查看
1.readonly表示这个属性是只读的,就是只生成getter方法,不会生成setter方法.
2.readwrite,设置可供访问级别
3.retain,是说明该属性在赋值的时候,先release之前的值,然后再赋新值给属性,引用再加1。
4.nonatomic,非原子性访问,不加同步,多线程并发访问会提高性能。注意,如果不加此属性,则默认是两个访问方法都为原子型事务访问。
@property(nonatomic, retain) NSString *text; translates as
“I have a member variable of type NSString* named ‘text’. I will want a getter/setter pair that uses the retain/release procedure.”
@property(nonatomic, assign) int value; translates as
“I have a member variable of type int named ‘value’. I will want a getter/setter pair that doesn’t use the retain/release procedure – just assign it.”
加上一段参考代码。。。
代码
@property(nonatomic, retain) UITextField * userName编译时自动生成的代码
- (UITextField * ) userName {
return userName;
}
- ( void ) setUserName:(UITextField * )userName_ {
[userName release];
userName = [userName_ retain];
}
@property(retain) UITextField * userName自动生成的代码
- (UITextField * ) userName {
UITextField * retval = nil;
@synchronized(self) {
retval = [[userName retain] autorelease];
}
return retval;
}
- ( void ) setUserName:(UITextField * )userName_ {
@synchronized(self) {
[userName release];
userName = [userName_ retain];
}
}
2.readwrite,设置可供访问级别
3.retain,是说明该属性在赋值的时候,先release之前的值,然后再赋新值给属性,引用再加1。
4.nonatomic,非原子性访问,不加同步,多线程并发访问会提高性能。注意,如果不加此属性,则默认是两个访问方法都为原子型事务访问。
@property(nonatomic, retain) NSString *text; translates as
“I have a member variable of type NSString* named ‘text’. I will want a getter/setter pair that uses the retain/release procedure.”
@property(nonatomic, assign) int value; translates as
“I have a member variable of type int named ‘value’. I will want a getter/setter pair that doesn’t use the retain/release procedure – just assign it.”
加上一段参考代码。。。
代码
@property(nonatomic, retain) UITextField * userName编译时自动生成的代码
- (UITextField * ) userName {
return userName;
}
- ( void ) setUserName:(UITextField * )userName_ {
[userName release];
userName = [userName_ retain];
}
@property(retain) UITextField * userName自动生成的代码
- (UITextField * ) userName {
UITextField * retval = nil;
@synchronized(self) {
retval = [[userName retain] autorelease];
}
return retval;
}
- ( void ) setUserName:(UITextField * )userName_ {
@synchronized(self) {
[userName release];
userName = [userName_ retain];
}
}
相关文章推荐
- time_wait详解
- RAID的各级特性及软RAID的创建
- 怎么解决啊???"Thread-14" HibernateException: Could not obtain transaction-.....
- ibm aix I/O ERROR DETECTED BY LVM
- 自定义View时,用到Paint Canvas的一些温故,讲讲平时一些效果是怎么画的(基础篇 二,图像遮盖,Canvas静态变化)
- 自定义View时,用到Paint Canvas的一些温故,讲讲平时一些效果是怎么画的(基础篇 二,图像遮盖,Canvas静态变化)
- Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
- EC纠删码(Erasure Code)校验码算法相比传统RAID5有哪些优势?
- 关于工作,学习中定时备份的几个方法(cron,git,mail)
- 打造终端下mutt收发邮件环境(fbterm,fetchmail,msmtp,procmail,mutt)
- 3D空间中的AABB(轴向平行包围盒, Aixe align bounding box)的求法
- Custom Container View Controller容器vc
- http://blog.csdn.net/techbirds_bao/article/details/9233599
- 最新Google Gmail邮箱登陆不了解决方法(hosts更新于12月14日)
- There is no public key available for the following key IDs:9D6D8F6BC857C906
- ssh中断“Write failed: Broken pipe”分析
- NSBundle的使用,注意mainBundle和Custom Bundle的区别
- POJ 1090 Chain
- Manage Data in Containers
- [__NSCFString containsString:]: unrecognized selector sent to instance 0x17d68490