IOS property 属性
来源:互联网 发布:数据不可信的 英文 编辑:程序博客网 时间:2024/05/18 16:57
大家都知道@property和@synthesize可以自动生成某个类成员变量的存取方法,但可能对property中的一些属性不是很了解,网上的一些介绍有的不是很正确,感觉会误导新手,于是准备详细介绍一下property中的详细属性。
先介绍一下默认的情况:
readwrite:这个属性是默认的情况,会自动为你生成存取器
assign:这个属性一般用来处理基础类型,比如int、float等等,如果你声明的属性是基础类型的话,assign是默认的,你可以不加这个属性
对于assign来说,他的存取器代码是这样的:
@property (nonatomic, assign) NSString* myField
- (NSString*) myField {
return myField;
}
- (void) setMyField: (NSString*) newValue {
myField = newValue;
}
natomic:默认是有该属性的,这个属性是为了保证程序在多线程情况,编译器会自动生成一些互斥加锁代码,避免该变量的读写不同步问题。
然后说一下其他的情况:
readonly:只生成getter不会有setter方法
copy:这个会自动生成你赋值对象的克隆,相当于在内存中新生成了该对象的副本,这样一来,改变赋值对象就不会改变你声明的这个成员变量了
retain:会自动retain赋值对象,具体实现如下:
@property (nonatomic, retain) NSString* myField
- (NSString*) myField {
return myField;
}
- (void) setMyField: (NSString*) newValue {
if (newValue !=myField) {
[myField release];
myField = [newValue retain];
}
}
可见首先要判断一下当前myField是否就是新赋值来的对象,如果不是要将自己release掉,之后才会进行赋值及retain。
nonatomic:如果该对象无需考虑多线程的情况,请加入这个属性,这样会让编译器少生成一些互斥加锁代码,可以提高效率。
strong 用来修饰强引用的属性;
@property (strong) SomeClass * aObject;对应原来的
@property (retain) SomeClass * aObject; 和 @property (copy) SomeClass * aObject;
weak 用来修饰弱引用的属性;
@property (weak) SomeClass * aObject;
对应原来的
@property (assign) SomeClass * aObject;
- iOS -- @property属性说明
- ios的@property属性
- iOS -- @property属性说明
- ios @property属性
- iOS -- @property属性说明
- iOS -- @property属性说明
- ios的@property属性
- iOS property属性
- iOS property属性
- iOS @property 属性详解
- IOS property 属性
- iOS-property属性
- iOS点语法@property属性
- iOS开发property属性浅析
- 浅析iOS的@property属性
- iOS中的@property的属性
- ios的@property属性和@synthesize属性
- ios的@property属性和@synthesize属性
- iOS开发 - Masonry
- bzoj 4241: 历史研究 分块
- 微信上传图片和图片存储
- 为什么要实现Serializable
- 创临时表空间
- IOS property 属性
- C语言——回调函数
- I/O阻塞
- IOS android 2个类之间的传值
- 微信公众平台开发(一) 配置接口
- iOS开发 - 多媒体
- IOS 点语法总结
- java语言程序设计第十版(Introduce to java 10th) 课后习题 chapter7-24
- 创同义词