@property 解析

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: @property 解析

声明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];
}
}


相关文章
|
1月前
|
存储 Python
property-data.
【10月更文挑战第14天】
25 1
|
NoSQL Java Redis
一日一技:在什么情况下使用@property比较好?
一日一技:在什么情况下使用@property比较好?
89 0
|
JavaScript 前端开发
|
Java
groovy下的field和property
groovy下的field和property
274 0
|
Java 数据库连接 mybatis
mybatis:There is no getter for property named ‘REGION‘ in ‘xxxEntity‘
mybatis:There is no getter for property named ‘REGION‘ in ‘xxxEntity‘
167 0
mybatis:There is no getter for property named ‘REGION‘ in ‘xxxEntity‘
|
XML SQL Java
Mybatis报错:There is no getter for property named ‘xxxx‘ in ‘class xxxx
Mybatis报错:There is no getter for property named ‘xxxx‘ in ‘class xxxx
261 0
|
Java 数据库连接 mybatis
Mybatis中传参报There is no getter for property name 'xxx'
Mybatis中传参报There is no getter for property name 'xxx'
191 0
|
XML Java 数据库连接
传入mybatis的xml为Long型时报There is no getter for property named 'VARCHAR' in
修改前       insert into tb_content (id, category_id, title,       sub_title, title_desc, url,       pic, pic2, created,       updated, content)    valu...
1337 0