何时写“NSString * str”或“NSString str”?

时间:2011-08-26 23:05:11

标签: iphone objective-c ios cocoa-touch pointers

我正在学习Objective C来在iOS上编程。 我知道它与指针有关,我无法理解。 我不知道创建一个字符串(或任何NSObject)的区别是什么:

NSString place = ...;
or
NSString *place = ...;

感谢您的帮助!!

3 个答案:

答案 0 :(得分:14)

从不NSString str。期。所有Obj-C对象实际上都是C指针。

答案 1 :(得分:5)

NSString是一个类,因此声明为NSString *str的类的实例必须始终声明为指针(因为对象实例只能通过指向对象结构的指针访问)。因此,此声明是非法的:NSString str

答案 2 :(得分:0)

在某种意义上,Objective-C更像是一种脚本语言。类定义在运行时维护,可以修改。 objc.h中有一个类定义系统的C接口。甚至可以修改系统类,但这样做并不是一个好主意。因此,所有Objective-C对象必须在运行时创建并通过指针访问。换句话说,编译器无法在编译时知道对象应该是什么样子。这也是为什么“对象可能无法响应选择器”是一个警告,而不是错误,并且其中包含“可能”一词。