1

我的 obj-c 类使用 C 库(Chipmunk 物理引擎),它有一个 Obj-C 包装器接口。

我想向我的对象添加一个花栗鼠类型(cpLayers)的属性,如下所示:

@interface
@property cpLayers layers;
...

最简单的方法是#import "ObjectiveChipmunk.h",但是为了获得一种微不足道的类型而导入所有标题似乎很荒谬。

如果我#import cpLayers 定义为“typedef unsigned int cpLayers;”的C“chipmunk_types.h”文件,我会得到与ARC相关的编译器错误。它们是在chipmunk_types.h 中定义并在我的.m 文件中使用的宏中的桥接/转换错误。

如果我只添加定义或#include chipmunk_types.h,我会收到重新定义错误。

有没有更好的方法来做到这一点?为什么会出现 ARC 错误?

4

1 回答 1

1

看看 ObjectiveChipmunk.h,它使用预处理器定义覆盖了基本的 Chipmunk 类型。如果你想解决这个问题,你可以将这些定义添加为编译器标志,但我并不担心。毕竟你已经在做Objective-C编程了,你有没有看过当你导入像Foundation.h这样无害的东西时被引入的大量包含?相比之下,导入完整的 ObjectiveChipmunk.h 标头大约是 1%。

于 2012-06-23T14:57:19.647 回答