Objective-C是否具有像C#这样的值/引用类型的概念?

时间:2014-02-26 06:42:41

标签: objective-c

根据Google上的搜索,看起来它没有正式的值/引用类型。如果它没有,那对应的是什么?它叫什么?它被称为'Obj-C类和非Objc-C类'还是'静态类型和动态类型'?

然而,对我来说,obj-c中的NSString对象'就像'在C#中的引用类型一样。它将导致编译错误“静态分配Objective-C类的实例...”如果没有'*'定义它

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

一些原生类型,如NSInteger或C struct,可以在没有'*'的情况下创建,我可以说它在C#中的作用类似于值类型吗?

NSInteger i = 0;

1 个答案:

答案 0 :(得分:5)

所有Objective-C对象都由指针访问。从这个意义上讲,它们都是参考类型。

某些Objective-C类型将对象相等性(-isEqual:方法)定义为指针相等之外的其他内容。这些类型表现为类似值的类型。这些类型包括NSString和NSNumber。

不是Objective-C类的类型可以是C#意义上的真值类型。