Objective-C中const实例变量的替代方案?

fdh*_*fdh 3 oop macos xcode objective-c

由于Objective-C不支持类中的const实例变量,因此有哪些替代方法可以确保变量的值不会发生变化?我不想求助于预处理器#defines,因为我更喜欢类变量.另外,是否存在不支持const实例变量的原因?

rob*_*off 5

Objective-C中的对象的构造与C++或Java中的对象不同.allocinit调用方法之前,方法将所有实例变量初始化为零,因此在init调用const实例变量时调用它会为时已晚.显然编译器编写者可以修改编译器以支持constinit方法中更改实例变量,但他们没有这样做.

通常,您只需创建实例变量@private并使用访问器方法公开它们.如果您不希望更改实例变量的值,请不要公开setter方法,也不要修改类实现中的变量.

如果您放弃对32位Mac OS X的支持,您可以将实例变量放在您的实体变量@implementation而不是您的实体变量中@interface,这样可以完全保护它们免受其他类的干扰.