2014-02-26 40 views
4

根據Google上的搜索,看起來它沒有正式的價值/參考類型。如果沒有,對應的是什麼?它叫什麼?它被稱爲'Obj-C類和非Objc-C類'或'靜態類型和動態類型'?Objective-C是否具有像C#這樣的值/引用類型的概念?

但是,對於我來說,obj-c中的NSString對象「像C#中的引用類型一樣工作」。它會導致編譯錯誤「靜態分配的Objective-C類的實例......」如果要定義它不「*」

NSString * pstr = [[[NSString alloc] init] autorelease]; 

一些原生類型,如NSInteger的或者C結構,它可以創建沒有'*',我可以說它'工作'就像在C#中的值類型?

NSInteger i = 0; 
+0

在C++中,可以將對象分爲在堆棧和堆上創建的對象。 Object-C中有這樣的事情嗎? –

回答

5

所有的Objective-C對象都被一個指針訪問。從這個意義上說,它們都是參考類型。

一些Objective-C類型將對象相等(-isEqual:方法)定義爲除指針相等之外的其他東西。這些類型的行爲類似於數值類型。這種類型包括NSString和NSNumber。

不是Objective-C類的類型可以是C#意義上的真值類型。

相關問題