何时使用实例变量而不是objective-C中的属性?

时间:2015-01-16 12:35:27

标签: objective-c properties instance-variables

使用Objective-C的@property指令,我可以声明将自动创建getter和setter方法的属性。我无法想到使用实例变量的任何特殊原因,我必须编写自己的setter和getter,但我确信必须有一个例子,更优选使用实例变量。有没有理由使用实例变量而不是属性?它有什么实际的例子吗?

2 个答案:

答案 0 :(得分:2)

问题在于这一行

slope = (line_cordinates[3] - line_cordinates[1]) / (line_cordinates[2] - line_cordinates[0]);

slope被声明为float,但line_cordinatesint的数组。

所以你在右边做了int数学的所有数学运算,然后将它分配给float。因此,所有int操作的最终结果都隐式转换为float,但到那时你已经失去了截断等的精度。

最快的解决方法是简单地声明

float line_cordinates[4] = {0.0, 0.0, 0.0, 0.0};

答案 1 :(得分:2)

使用,

slope = static_cast<float>((line_cordinates[3] - line_cordinates[1])) / (line_cordinates[2] - line_cordinates[0]);

您需要对右侧的任何操作数进行类型转换才能浮动。因此表达式将导致浮动。

int op int = int
float op int = float