关于@property的用法
来源:互联网 发布:淘宝售后维修流程 编辑:程序博客网 时间:2024/04/29 05:55
Objective-C语言关键词,与@synthesize配对使用。xcode4.5以及以后的版本,@synthesize可以省略
功能:让编译器自动编写一个与数据成员同名的方法声明来省去读写方法的声明。
如:
1、在头文件中:
@property int count;
等效于在头文件中声明2个方法:
- (int)count;
-(void)setCount:(int)newCount;
2、实现文件(.m)中
@synthesize count;
等效于在实现文件(.m)中实现2个方法。
- (int)count
{
return count;
}
-(void)setCount:(int)newCount
{
count = newCount;
}
以上等效的函数部分由编译器自动帮开发者填充完成,简化了编码输入工作量。
格式编辑
声明property的语法为:
@property (参数1,参数2) 类型 名字;
如:
@property(nonatomic,retain) UIWindow *window;
其中参数主要分为三类:
读写属性: (readwrite/readonly)
setter语意:(assign/retain/copy)
原子性: (atomicity/nonatomic)
各参数意义如下:
readwrite
产生setter\getter方法
readonly
只产生简单的getter,没有setter。
assign
默认类型,setter方法直接赋值,而不进行retain操作
retain
setter方法对参数进行release旧值,再retain新值。
copy
setter方法进行Copy操作,与retain一样
nonatomic
禁止多线程,变量保护,提高性能
参数类型详解编辑
参数中比较复杂的是retain和copy,具体分析如下:
getter分析
1、 @property(nonatomic,retain)test* thetest;
@property(nonatomic ,copy)test* thetest;
等效代码:
-(test*)thetest
{
return thetest;
}
2、@property(retain)test* thetest;
@property(copy)test* thetest;
等效代码:
-(void)thetest
{
[thetest retain];
return [thetest autorelease];
}
setter分析
1、
@property(nonatomic,retain)test* thetest;
@property(retain)test* thetest;
等效于:
-(void)setThetest:(test *)newThetest {
if (thetest!= newThetest) {
[thetestrelease];
thetest= [newThetest retain];
}
}
2、@property(nonatomic,copy)test* thetest;
@property(copy)test* thetest;
等效于:
-(void)setThetest:(test *)newThetest {
if (thetest!= newThetest) {
[thetestrelease];
thetest= [newThetest copy];
}
}
0 0
- 关于@property的用法
- 关于<s:property>的用法
- 关于@property的一些用法
- <s:property>的用法
- <s:property>的用法
- <s:property>的用法
- <s:property>的用法
- <s:property>的用法
- <s:property>的用法
- <s:property>的用法
- <s:property>的用法
- <s:property>的用法
- s:property的用法
- <s:property>的用法
- <s:property> 的用法
- <s:property>的用法
- <s:property>的用法
- <s:property>的用法
- TCP/IP详解学习笔记(1)-基本概念
- Effective学习 条款03 04
- Lua chapter 7
- 动态规划与贪心算法区别以及如何思考动态规划
- 【ERROR】【opencv】【VS2012 Toast】配置OpenCV产生flann\logger.h(66): error C4996: 'fopen'
- 关于@property的用法
- wx播放flash
- Android自定义竖排TextView
- 在职场中与上司相处的礼仪
- Android 终端性能测试
- 当从页面向数据库插入数据时,中文为乱码的解决方法:
- xilinx elf to auto boot bin
- Git 学习 -2 status
- 【不错】浅析Oracle三层全球化支持(NLS)