关于Objective-C中的私有实例变量

关于Objective-C中的私有实例变量,objective-c,variables,private,visibility,Objective C,Variables,Private,Visibility,在xCode 3中,我在类中定义了私有实例变量。当我直接访问客户机代码中的私有变量时,为什么编译器只向我显示警告而不是错误?代码仍然可以运行。警告说这在将来可能是一个严重的错误。“硬错误”是什么意思?谢谢。好吧,硬错误意味着它将在将来成为错误,而不是警告。至于为什么现在这是一个警告,我不确定。我想这是出于同样的原因,当你试图调用一个类中不存在的方法时,这也只是一个警告。好吧,硬错误意味着它将在将来成为一个错误,而不是警告。至于为什么现在这是一个警告,我不确定。我想这也是因为同样的原因,当你试图调

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

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

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

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

现在,编译器只是没有强制执行Objective-C的可见性限制。然而,警告是为了提醒您正在做一些不应该做的事情,并提醒您注意这一点,以防您意外地做了

如果我不得不猜测为什么能见度没有被强制执行,我会说,在基础库和CopeFoundation库之间的所有免费桥接器中,可能有相当数量的库代码访问实例变量,严格地说,不应该是可见的。


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

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

现在,编译器只是没有强制执行Objective-C的可见性限制。然而,警告是为了提醒您正在做一些不应该做的事情,并提醒您注意这一点,以防您意外地做了

如果我不得不猜测为什么能见度没有被强制执行,我会说,在基础库和CopeFoundation库之间的所有免费桥接器中,可能有相当数量的库代码访问实例变量,严格地说,不应该是可见的。


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

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