根据Google上的搜索,看起来它没有正式的值/引用类型。如果它没有,那对应的是什么?它叫什么?它被称为'Obj-C类和非Objc-C类'还是'静态类型和动态类型'?
然而,对我来说,obj-c中的NSString对象'就像'在C#中的引用类型一样。它将导致编译错误“静态分配Objective-C类的实例...”如果没有'*'定义它
NSString * pstr = [[[NSString alloc] init] autorelease];
一些原生类型,如NSInteger或C struct,可以在没有'*'的情况下创建,我可以说它在C#中的作用类似于值类型吗?
NSInteger i = 0;
答案 0 :(得分:5)
所有Objective-C对象都由指针访问。从这个意义上讲,它们都是参考类型。
某些Objective-C类型将对象相等性(-isEqual:方法)定义为指针相等之外的其他内容。这些类型表现为类似值的类型。这些类型包括NSString和NSNumber。
不是Objective-C类的类型可以是C#意义上的真值类型。