为什么在GCDevice.h中获取具有“保留(或强)”属性的属性必须是对象类型?

时间:2020-09-23 11:59:41

标签: objective-c macos gamekit xcode12

我的代码始终在12之前的Xcode版本中正确编译。现在,我尝试在12中进行编译,我得到了这个错误-我知道如何解决,除了它在CoreController标头GCDevice中。 h,由Apple提供。 令人讨厌的是,我什至没有使用CoreController,而是由GameKit.h导入的,我确实使用过。 我的代码是用ObjectiveC编写的,并且是为MacOS构建的,并且GameKit的导入如下(如果有区别):

#import <Cocoa/Cocoa.h>
#import <GameKit/GameKit.h>
#import <AVFoundation/AVAudioPlayer.h>

当我使用GameKit创建一个全新的项目时,只有复制并粘贴了使用GameKit的代码(而不是实际的游戏)时,它才能很好地构建。在我看来,这可能暗示构建设置存在问题?

GameKit仅导入一次,因此我认为多次导入不会有问题。还有其他人看到过这个问题吗?

3 个答案:

答案 0 :(得分:2)

enter image description here

build Settings -> Depolyment -> macOS Depolyment Target -> 11.1

答案 1 :(得分:0)

在我的情况下,答案是代码没有错。由于某种原因,.xcodeproj文件的内容已损坏,或与Xcode 12预期的内容不同,但以某种方式Xco​​de 12无法修复。 一旦从.xcodeproj中清除了xcuserdata(打开xcodeproj捆绑软件并删除了xcuserdata(也从xcworkspace捆绑软件中)),问题就消失了。

您的里程可能会有所不同-在弄乱此文件之前,请确保已备份!

答案 2 :(得分:0)

对于那些想要使用较早的 Deployment 版本的人,您可以(如 Ma Jin 回答的那样)将 Deployment Target 设置为 11.1 以消除错误。但是,在进行编译后,您可以将部署版本设置回较早的版本(例如 10.9),它也会编译。不要问我为什么这样做。