2012年9月5日 星期三

MAC Day 10 - Objective-c - accessor method


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]);





沒有留言:

熱門文章