ios开发中@property的属性介绍
来源:互联网 发布:潮州淘宝培训 编辑:程序博客网 时间:2024/06/05 15:45
转载自:http://blog.csdn.net/volcan1987/article/details/6721828
大家都知道@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;
- }
atomic:默认是有该属性的,这个属性是为了保证程序在多线程情况,编译器会自动生成一些互斥加锁代码,避免该变量的读写不同步问题
然后说一下其他的情况:
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:如果该对象无需考虑多线程的情况,请加入这个属性,这样会让编译器少生成一些互斥加锁代码,可以提高效率
0 0
- 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】iOS开发中@property的属性介绍
- iOS开发中属性 property 和 synthesize 权威的介绍
- iOS开发中属性 property 和 synthesize 权威的介绍
- hdu 3681 Prison Break (TSP问题)
- 表单-实现文本框达到最大值后自动切换到下一个文本框
- 获取<s:select>的listValue
- 简单的thinkphp,mysql增删查改,连贯操作总结
- javascript深入理解js闭包
- ios开发中@property的属性介绍
- 第21章、OnItemSelectedListener事件(从零开始学Android)
- C++中的虚函数和纯虚函数用法
- 连网和异步 I/O
- 大数加法(一个C程序段)
- ORA-01727 view赋权with grant option
- Pthread & Gthread
- u见风使舵就开始的交罚款是的角度看开始觉得空间
- BOX2D 第十三章 限制