gpt4 book ai didi

objective-c - 从 Cocoa 中的 C 方法访问属性

转载 作者:行者123 更新时间:2023-12-03 16:52:07 25 4
gpt4 key购买 nike

我正在尝试学习 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

给我错误“带有'retain'的属性'forceVector'必须是对象类型”

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

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

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

任何帮助,非常感谢。这件事让我发疯。

最佳答案

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

@property (assign) cpVect *forceVector;

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

关于objective-c - 从 Cocoa 中的 C 方法访问属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/698957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com