objective-c为什么.mm文件被认为是int *类型?

时间:2013-10-15 01:03:53

标签: c++ objective-c cocos2d-iphone objective-c++

我正在尝试创建一个.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

1 个答案:

答案 0 :(得分:1)

你做过

#import "GameLogic.h"

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

@class GameLogic;

但不是

class GameLogic;

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

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