2014-02-26 42 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#意义上的真值类型。

相关问题