1

我正在尝试学习 Objective C 和 Cocoa,但我无法访问对象内的属性。特别是来自 C 方法的对象。我正在使用花栗鼠动态库。

Chipmunk 有一个类似于 NSPoint 的东西,叫做 cpVect。现在我在我的对象中定义一个 cpVect 没有问题,但是当我尝试使用 @property 和 @synthesize 制作访问器时,我不断收到错误:所以

@interface ControlsLayer : Layer {
    Sprite * touchMarker, *dragMarker;
    cpVect * forceVector;
}

工作正常

@interface ControlsLayer : Layer {
    Sprite * touchMarker, *dragMarker;
    cpVect * forceVector;
}

@property (retain) cpVect forceVector;

@end

给我错误"property 'forceVector' with 'retain' must be of object type"

所以没有“保留”我会得到一个不同的错误

"type of property 'forceVector' does not match type of ivar 'forceVector'"

我正在兜圈子试图弄清楚这一点,有没有我可以使用的特定类型,它是花栗鼠和可可之间的不兼容,还是......或者......我不知道。Chipmunk 对文档非常了解,我发现的所有示例似乎都没有使用对象,所有示例都只使用一个类来处理所有内容。

任何帮助,非常感谢。这件事快把我逼疯了。

4

2 回答 2

4

您得到的错误是因为retain(即引用计数内存管理,setter 增加新值的引用计数并减少旧值的引用计数)的语义仅对 Objective-C 对象有意义。属性的默认语义是retain,但您可以指定属性assign如下:

@property (assign) cpVect *forceVector;

我假设该属性实际上是 a cpVect*,而不是cpVect您所写的 a 。

于 2009-03-30T20:56:53.087 回答
2

您在实例变量中有一个指向 cpVect 的指针,但在您的属性中没有。

试试这个:

@property (assign) cpVect * forceVector;

于 2009-03-30T20:57:42.040 回答