Objective-c中的const修饰符

时间:2015-10-26 11:48:36

标签: ios objective-c

1,请参阅以下代码:

const UIView *view = [[UIView alloc] init];
view.tag = 2;

2,在我看来," const"意思是变量无法改变 3,所以我认为我无法改变对象的内容,这些内容是"查看"指向,但我可以改变view.tag,我不知道为什么。

1 个答案:

答案 0 :(得分:5)

正确用法为UIView *const view = [[UIView alloc] init];

您无法更改view的内容,但您可以随时更改view拥有的对象的内容

此问题解释了休息:What is the difference between const int*, const int * const, and int const *?

为什么您可以更改tag,因为它被定义为

@property(nonatomic) NSInteger tag; // default is 0

它没有定义为常量(只读),因此您可以更改其tag。如果您希望对象的内容不应更改,那么在这种情况下,您必须更改该类的定义,并在属性的情况下将其ivar设为constreadonly