1. .h : @property 宣告實體變數
@property(attribute1, attribute2…) type variable
writability :
readonly-唯讀,只能讀取而不能設定值(不能用setXXXX的函式)。
readwrite-可讀可寫(預設)。
setter semantics
strong -
f2 = f1;
[f1 retain];
[f2 release];
f2 = f1;
如果沒有將 f2 release, 可能會造成 memory leak
weak -
避免 retain cycle.
在 iOS 4 和 OS 10.6 不支援, 須改用 unsafe_unretained
copy-在設值時copy一份新資料,release舊資料。
assign-在設值時替換新舊資料, 而不會增加 retain count(預設)。
retain-在設值時retain新的資料,release舊資料。
Atomicity
nonatomic-預設為atomic以符合多工環境, 設成nonatomic可提高效率
e.g.
@property double accumulator;
2. .m : @synthesize 存取實體變數
e.g.
@synthesize accumulator;
3. 則不需要額外函式, 就可以存取變數
e.g.
[myCalc setAccumulator: 100.0];
NSLog(@"The result is %g", [myCalc accumulator]);
沒有留言:
張貼留言