Saturday, October 13, 2007

Objective-C

與C++最大的差異:
  • 萬用型別id
  • 實務上,與Standard Library緊密結合 - NSObject、NSString、@"NSString literal from ascii text"
  • 對物件發送訊息(喚起method) [object methodName:arg arg2Name:arg2] 這個method會被叫做methodName:arg2Name:
  • 對nil物件發送訊息是安全的,也不會有Exception出現
  • objects are reference counted
  • [object autoRelease]會把object retain(類似COM AddRef)在AutoRelease Pool中。不同於C++以Lexical Scope做為物件生命週期的概念,AutoRelease Pool的生命週期在「一次Event Loop」當中。
  • 慣例上,除了[object alloc]與[object copy]之外,其他的Factory function都會將回傳物件自動加入AutoRelease Pool中。如此一來Client就不用再呼叫release,這是為了讓物件轉發變的比較容易。