gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:48 26 4
gpt4 key购买 nike

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

有人知道我该怎么做才能克服这个问题吗?我知道存在许多解决方案,其中之一就是不创建薄弱环节、使用委托(delegate)或许多其他可能的解决方案。

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

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

====

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

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

最佳答案

你有吗

#import "GameLogic.h"

在您添加属性的页眉中?您还可以添加

@class GameLogic;

但不是

class GameLogic;

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

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

关于c++ - objective-c 为什么 .mm 文件被认为是 int* 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19371704/

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