CGPoint作为财产

时间:2014-03-22 07:04:18

标签: ios xcode properties

我一直试图避免使用iVars有很多原因,而是使用属性。

如果我设置为属性变量,例如CGPoint类型:

@interface Foo () {

    @property (nonatomic, assign) CGPoint lastPoint;
}

我得到了:

Expression is not assignable

我理解CGRectCGPoint等类型的结构以及它为什么不起作用的原因。 当然,我可以使用_lastPoint来解决这个问题。

我假设我必须创建自定义设置器?但是......可能它不可能或多余。

我希望有类似的东西:

self.lastPoin.x = 10;

3 个答案:

答案 0 :(得分:0)

你不能这样分配self.lastPoint.x = 10;但你可以分配self.lastPoint = CGPointMake(10, 0);。因为setter方法仅适用于lastPoint,不适用于lastPoint.x。因为您已经知道,lastPoint是一个结构。如果你想喜欢这个分配,可以使用像

这样的变量
@interface Foo () {

    CGPoint lastPoint;
}

答案 1 :(得分:0)

使用属性时,您使用的是setter方法。 CGPoint有两个像i和y的iVars。它们未被声明为属性。

因此,您可以直接设置该点,因为您已为其创建了属性,或者您可以通过直接访问点直接为x和y赋值。

答案 2 :(得分:0)

您遇到self.lastPoint.x = 10;时遇到问题。

请记住,这与[self lastPoint].x = 10;相同。

您需要做的是:

CGPoint point = self.lastPoint;
point.x = 10;
self.lastPoint = point;