我正在学习Objective C来在iOS上编程。
我知道它与指针有关,我无法理解。
我不知道创建一个字符串(或任何NSObject
)的区别是什么:
NSString place = ...;
or
NSString *place = ...;
感谢您的帮助!!
答案 0 :(得分:14)
你从不写NSString str
。期。所有Obj-C对象实际上都是C指针。
答案 1 :(得分:5)
NSString是一个类,因此声明为NSString *str
的类的实例必须始终声明为指针(因为对象实例只能通过指向对象结构的指针访问)。因此,此声明是非法的:NSString str
答案 2 :(得分:0)
在某种意义上,Objective-C更像是一种脚本语言。类定义在运行时维护,可以修改。 objc.h中有一个类定义系统的C接口。甚至可以修改系统类,但这样做并不是一个好主意。因此,所有Objective-C对象必须在运行时创建并通过指针访问。换句话说,编译器无法在编译时知道对象应该是什么样子。这也是为什么“对象可能无法响应选择器”是一个警告,而不是错误,并且其中包含“可能”一词。