1

在 xCode 3 中,我在一个类中定义了私有实例变量。当我直接访问客户端代码中的私有变量时,为什么编译器只显示警告而不是错误?代码仍然可以运行。警告说这可能是未来的一个硬错误。“硬错误”是什么意思?谢谢。

4

2 回答 2

1

硬错误意味着将来某个时候编译器将按照您期望的方式运行(即,当您直接访问定义的可见性范围之外的实例变量时,它不会编译源文件)。

现在编译器根本没有强制执行 Objective-C 的可见性限制。然而,警告在那里提醒你你正在做一些你不应该做的事情,并提醒你注意这一点,以防你不小心做了。

如果我不得不冒险猜测为什么不强制执行可见性,我会说在 Foundation 库和 CoreFoundation 库之间有所有免费的桥接东西,可能有相当数量的库代码可以访问严格来说,实例变量不应该是可见的。

一般来说,无论如何直接访问实例变量是个坏主意。只要您可以使用 Obj-C 2.0,如果您正在设计纯数据模型对象,最好使用属性之类的东西。

于 2009-04-03T14:04:13.137 回答
0

好吧,硬错误意味着它将来会变成错误而不是警告。至于为什么现在是警告,我不确定。我想这也是出于同样的原因,当您尝试调用类中不存在的方法时,这也只是一个警告。

于 2009-04-03T12:39:33.947 回答