天天看點

object-C語言特性(一)

Object-C 語言使用”消息結構“而非函數調用。該語言是由Smalltalk演化而來,後者是消息型語言的鼻祖。

關鍵差別在于:使用消息結構的語言,其運作時所執行的代碼由運作環境所決定;而使用函數調用語言,由編譯器決定。

Object-C語言對象所占的記憶體總是配置設定咋堆空間(heap space),絕對不能配置設定到棧中。

如可以這樣寫:

NSString *string1 = @"string";
NSString *string2 = [[NSString alloc]initWithCString:"string " encoding:NSStringEncodingConversionAllowLossy];
           

而不能這樣寫:

NSString string3;
           

有時會遇到 不含*的變量,可能會使用棧空間,這些不是Object-C 對象。 如:

CoreGraphics架構中的CGRect

CGRect frame;
frame.origin.x=f;
frame.origin.y=f;
frame.size.width=f;
frame.size.height=f;
           

起結構體定義:

struck CGRect{
    CGPoint origin;
    CGSize size;
};
           

Object-C将堆記憶體管理抽象出來,不需要malloc和free來配置設定或釋放記憶體。運作期環境把這部分工作抽象為一套記憶體管理架構,名叫”引用計數“;

參考《編寫高品質IOS與OSX代碼的52個有效方法》