如果我有一个像这样的 C 字符串:
const char* str= "hello";
我很清楚我无法更改字符串的任何字符,因为指针是常量。
但如果我有这个:
- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location
我仍然可以使用它的方法来改变对象状态。
如果指针指向 NSMutableString,我仍然可以改变它。
那么const代表什么呢?
在该方法声明中,location
是一个指向常量的指针CLLocation
。但当你向对方发送消息时location
对象,即const
-ness 不被保留;处理消息的方法看到self
作为一个非const
目的。 (请注意,这与 C++ 不同,C++ 支持const
成员函数其中this
是一个指向常量对象的指针。)
So the const
在该声明中并不是特别有用。也许它是由习惯 C++ 处理方式的人编写的。
当你看到const
在 Objective-C 中附加到一个对象指针,通常是这样的:
extern NSString * const SomeConstantString;
这宣告SomeConstantString
作为指向某个非常量对象的常量指针(在本例中,是一个NSString
)。指针本身是恒定的,所以你的程序不能改变SomeConstantString
指向其他一些NSString
object.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)