您的位置:首页 > 移动开发 > IOS开发

iOS中@property

2016-02-13 16:40 387 查看
二.@property

1.生成get与set方法的声明

2.生成get与set方法的简单实现

3.如果你没有声明对象成员变量,那么他会自动生成一个_开头的成员变量

@property参数分为4类:

1.与set方法内存管理相关参数

retain:要生成符合内存管理原则的set方法(应用与对象类型),引用计数会+1;

assign:直接赋值,(对象类型,基本数据类型而不是NS对象),引用计数不会+1;

copy: 建立一个索引计数为1的对象,然后释放旧对象;

简单的基本数据类型指的是:int,float,double,char,对象类型指的是NS开头的对象

copy与retain的区别:

copy其实是建立了一个相同的对象,而retain不是:

比如一个NSString 对象,地址为0×1111 ,内容为@”STR”

copy 到另外一个NSString 之后,地址为0×2222 ,内容相同,新的对象retain为1 ,旧有对象没有变化

retain 到另外一个NSString 之后,地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retain值+1

也就是说,retain 是指针拷贝,copy 是内容拷贝。

2.多线程相关

nonatomic:不生成多线程线管代码

atomic: 生成多线程线管代码(不写默认的就是这个方式)

3.是否生成set与get方法

readwrite:可读可写属性

readonly:只读属性,只生成get方法,如果要修改属性,只能在init方法里赋值

4.set与get方法名称相关的参数

setter:设置生成的set方法名称

getter:设置生成的get方法名称

两者常用于BOOL类型的方法里。来修改原本的set,get方法。

@property(nonatomic,assign,setter:,getter:)int weight;

@property(nonatomic,retain,readonly)NSString name;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: