为什么目标c中需要吸气剂和二传手?

时间:2011-05-31 13:07:04

标签: objective-c-2.0

我已经在stackoverflow上阅读了几个关于这个问题的答案,但我的问题有点不同。 我想知道的是对于不依赖于类的其他变量的变量,为什么我不能像在java中那样声明变量public然后直接访问变量?

我的意思是在目标c中,如果我有一个我在类的接口中声明的变量,为什么我不能直接(没有使其getter和setter)访问, self.variable或instanceofclass.variable ....?

这是我们通常在java和其他面向对象语言中所做的事情。

getter和setter有自己的优势,但是当你做简单的事情时,如果你按照我上面提到的方式访问变量会不会更好。

PS:我对目标c很新,所以如果我们能够以我声称不能的方式访问变量,请原谅。我试过这样做,但是有一个错误,因此我问,但很可能是由于其他原因。再请原谅。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

因为它根本就是错误的。如果将成员变量公开为public,则表示您正在公开客户端不应知道的存储策略的内部详细信息。如果将来要实现智能策略(如动态分配),或者每次访问变量时只是放置一个print语句,这将使您的生活变得更加困难,以便进行调试。访问公共变量比调用方法的自由度要小得多,并且您必须自己选择,因为访问成员var并调用成员函数使用不同的语法,因此您必须到处修改代码。

这不是问题的唯一情况是当你有一个纯结构时,一个类的成员纯粹是用一个集合名称来保存和携带一堆数据,并且存储策略已经暴露了您携带的大量数据的性质。