我正在尝试创建一个.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
答案 0 :(得分:1)
你做过
#import "GameLogic.h"
在您添加属性的标题中?您也可以添加
@class GameLogic;
但不是
class GameLogic;
因为这会使它成为C ++类的前向引用。还要仔细检查您实际上没有同名的C ++类。
那个头文件的实现也是.mm?因为必须是GameLogic允许直接访问(属性或返回值)到C ++类。