Objective-C識別字皆前置@字符
id是指標,可以指向任何物件
BOOL其實是char,用YES代表1,NO代表0
IBOutlet是給Interface Builder看的,沒別的意思
IBAction是給Interface Builder看的,與void是同樣的東西
nil和NULL是同樣的東西,一般將nil用於物件指標
送給nil的任何通知都會被忽略
不能把nil放進NSArray,要用[NSNull null]代替
儲存在nib檔的物件被重新賦予生命之後,每個物件都會收到awakeFromNib通知
#import類似#include,#import會確保檔案只被引入一次
把數字當物件傳遞時可以用[[NSNumber alloc] initWithInt:(1234)]
用alloc建立物件時,retain count為1,呼叫retain會將retain count加1,呼叫release會將retain count減1,retain count為0時,物件會被釋放
物件的dealloc會在retain count為0時被呼叫
呼叫autorelease會將物件放進autorelease pool,在event loop結束時被釋放
從alloc、new、copy或mutableCopy取得的物件,retain count為1,且不在autorelease pool中
從其它函式取得的物件,retain count為1,且在autorelease pool中,要呼叫retain才能保留物件下次再用,否則會在event loop結束時被釋放
init中要記得先[super init],dealloc中要記得在最後[super dealloc]
NSLog(@"%@")顯示的物件資訊是由(NSString*)description提供
用NSWindow的initialFirstResponder指定預設輸入焦點
編譯取取得selector:SEL selector = @selector(message:)
程式執行時從字串取得selector:SEL selector = NSSelectorFromString(@"message:")
[object message:arg]會被編譯器換成objc_msgSend(object, @selector(message:), arg)
可以用(BOOL)respondsToSelector:(SEL)aSelector檢查物件的method是否存在