在xCode 3中,我在一个类中定义了私有实例变量。当我直接访问客户端代码中的私有变量时,为什么编译器只显示警告,而不是错误?代码仍然可以运行。警告说这可能是未来的一个难题。 “硬错误”是什么意思?感谢。
答案 0 :(得分:1)
硬错误意味着将来某个时候编译器将按照您期望的方式运行(即,当您直接访问定义的可见范围之外的实例变量时,它不会编译源文件)。
目前编译器根本没有强制实施Objective-C可见性限制。然而,警告在那里是为了提醒您,您正在做一些您不应该做的事情,如果您偶然做到这一点,请引起您的注意。
如果我不得不猜测为什么没有强制执行可见性,我会说基础库和CoreFoundation库之间的所有免费桥接东西,可能有相当数量的库访问实例变量的代码,严格来说,不应该是可见的。
一般来说,无论如何直接访问实例变量都是一个坏主意。只要您可以使用Obj-C 2.0,如果您正在设计纯数据模型对象,那么使用类似属性的东西可能会更好。
答案 1 :(得分:0)
嗯,硬错误意味着它将来会成为一个错误,而不是一个警告。至于为什么现在是警告,我不确定。我想这也是出于同样的原因,当你试图调用一个类上不存在的方法时,这也只是一个警告。