在.h文件中聲明@property可用於替代聲明實例變量。他能夠在運行時生成get set方法。安全
聲明以下
性能
@property(nonatomic) int num;
調用方式atom
類名.num = 10; int n = 類名.num;
在property聲明時會有多種選擇線程
讀寫屬性readwrite | readonly指針
readwrite:可讀可寫code
readonly:只讀對象
系統默認使用readwrite
內存
setter相關修飾符:assign| retain | copyget
assign:表示直接賦值,這個修飾符不會牽涉到內存管理,若是對象類型使用此修飾符可能引起內存溢出it
retain:針對對象類型進行內存管理,若是對基本數據類型使用會報錯。當給對象類型使用此修飾符時,setter方法會將舊對象屬性releaase,再對新對象進行一次賦值並retain。
copy:主要用在NSString類型表示複製內容。
系統默認是assign
retain是指針的複製不從新分配內存空間,copy是內容的複製
原子性修飾符:atomic | nonatomic
atomic:表示線程安全。
nonatomic:表示非線程安全,使用此屬性性能會提升一點。
系統默認使用nonatomic
getter和setter修飾符
@property(getter = getName , setter = setName) Object *obj;
這兩個修飾符用於自定義getter setter方法名。
一、二、3組只能出現一個4則能夠同時使用
Xcode4.2(iOS sdk4.3和如下版本)和之前的版本用retain和assign
Xcode4.3(iOS 5和以上版本)或以後有了ARC用strong和weak
前面不須要加*的就用assign
strong相似於retain,weak相似於assign
使用assig:對基礎數據類型(如NSInteger, CGFloat)和C數據類型(int, float, double, char等), 另外還有id類型
使用copy:對NSString類型
使用retain:對其它NSObject和其子類