【问题标题】:About private instance variables in Objective-C关于 Objective-C 中的私有实例变量
【发布时间】:2010-10-17 08:28:09
【问题描述】:

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

【问题讨论】:

    标签: objective-c variables private visibility


    【解决方案1】:

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

    【讨论】:

    • 由于 Objective-C 的动态特性,您可以调用类中不存在的方法。也就是说,无论编译器在编译时是否知道它,您都可以在运行时向类发送消息。
    • 对,我只是想成员变量的工作方式可能相同(例如在 PHP 中)
    【解决方案2】:

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

    现在编译器根本没有强制 Objective-C 的可见性限制。但是,该警告是为了提醒您正在做一些您不应该做的事情,并提醒您注意这一点,以防您不小心这样做了。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      • 2023-04-04
      • 2013-11-27
      • 2014-08-12
      • 2011-05-07
      • 2013-03-01
      相关资源
      最近更新 更多