1

我正在尝试创建一个 .mm 类的弱引用......问题是文件,即使在代码方面它是一个 NSObject 类,它认为它是一个 int* 类型。如果我将文件更改回 .m 虽然它接受它作为 Obj-c 类但代码停止工作因为 cocos2d 要求文件是 .mm

//Game Logic is actually NSObject meaning obj-c class.
@interface GameLogic : NSObject 


//However here I get the error like the file is type int*
@property (weak,nonatomic)GameLogic * __weak gameLogicWeak;

这些是我得到的 2 条消息。

Property with 'weak' attribute must be of object type

'__weak' only applies to Objective-C object or block pointer types; type here is 'int *'

任何人都知道我能做些什么来克服这个问题?我知道存在许多解决方案,其中之一就是不创建薄弱环节、使用委托或许多其他可能的解决方案。

但是这个解决方案是我想出的一个更清洁的解决方案,它使 ARC 在清理内存时派上用场。

有什么建议么?解决方法?解决方案?有人遇到过这个问题吗?

====

当 @class GameLogic 分别添加到 .h 和 #import 中时,我收到以下消息。此消息是在我使用弱引用的位置生成的。

Receiver type 'GameLogic' for instance message is a forward declaration
4

1 回答 1

1

你有没有

#import "GameLogic.h"

在您添加属性的标题中?您还可以添加

@class GameLogic;

但不是

class GameLogic;

因为这会使它成为对 C++ 类的前向引用。还要仔细检查您实际上没有同名的 C++ 类。

那个头文件的实现也是.mm吗?因为它必须是如果 GameLogic 允许直接访问(属性或返回值)到 C++ 类。

于 2013-10-15T10:41:47.953 回答