我一直试图避免使用iVars有很多原因,而是使用属性。
如果我设置为属性变量,例如CGPoint
类型:
@interface Foo () {
@property (nonatomic, assign) CGPoint lastPoint;
}
我得到了:
Expression is not assignable
我理解CGRect
,CGPoint
等类型的结构以及它为什么不起作用的原因。
当然,我可以使用_lastPoint
来解决这个问题。
我假设我必须创建自定义设置器?但是......可能它不可能或多余。
我希望有类似的东西:
self.lastPoin.x = 10;
答案 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;