剛開始接觸Xcode跟interface builder有點既熟悉又陌生的感覺
基本上我是覺得蠻像FLEX的,只是從AS變成objective-C
同樣有物件導向的概念,但是語法上卻天差地遠…
首先我就一直不懂那個宣告中的星號是幹嘛的
有點後悔以前C沒有好好學…
後來知道原來在objective-C中幾乎不是宣告實體的物件,而是宣告指標指向物件的記憶體位置
NSString *string = [[NSString alloc] init]; |
NSString *string = [[NSString alloc] init];
這一句翻成中文應該就是說
宣告一個NSString類別名叫string的指標,指向一個被初始化成NSString類別所需要的記憶體空間的記憶體位置
其中alloc就是在配置string所需的記憶體空間
而每一個繼承NSObject的物件都會有一個retainCount來紀錄該物件被參考的次數
當retainCount值為0時,該記憶體就會被釋放掉(其實應該說他會自動執行一個dealloc的函數,把記憶體釋放掉)
在程式中我們也可以用retain來增加retainCount或用release減少retainCount值
NSString *string = [[NSString alloc] init];
NSLog(@”retain count = %d”, [string retainCount]); // retain count = 1
[string retain];
NSLog(@” retain count = %d”,[string retainCount]); // retain count = 2
[string release];
NSLog(@” retain count = %d”,[string retainCount]); // retain count = 1 |
NSString *string = [[NSString alloc] init];
NSLog(@”retain count = %d”, [string retainCount]); // retain count = 1
[string retain];
NSLog(@” retain count = %d”,[string retainCount]); // retain count = 2
[string release];
NSLog(@” retain count = %d”,[string retainCount]); // retain count = 1
繼續閱讀 →