gpt4 book ai didi

ios - “名称”不可用 : not available on iOS - XCode11

转载 作者:行者123 更新时间:2023-11-28 19:25:45 26 4
gpt4 key购买 nike

从 XCode 10.0 升级到 11 之后

我收到错误消息“名称”不可用:在 iOS 上不可用

这是在 XCode 11.0 和 11.1 上为 Swift 4.2 构建期间,我仍然可以使用 XCode 10 构建

这发生在我们通过 Cocopods 使用的 Objective C 外部库之一的代码中。

return [(NSNumber *)[table[state] objectForKey:[rule name]] unsignedIntegerValue];

我可以通过将变量 name 重命名为 ruleName 来解决这个问题,但我不想这样做。

为什么 Xcode 反对 name 的变量名?这是 Xcode 还是我可以在build设置中修复的东西

编辑

具体的pod是NUI 0.5.5

在模块 NUIPShiftReduceGotoTable.m 中

- (NSUInteger)gotoForState:(NSUInteger)state rule:(NUIPRule *)rule
{
return [(NSNumber *)[table[state] objectForKey:[rule name]] unsignedIntegerValue];
}

最佳答案

Apple 进行了一项更改,可能会破坏之前在 Xcode 11.0/11.1 中编译的代码。以前,编译器可以将“名称”消息传递给它不知道其类型的对象。在弱类型的 Objective-C 世界中,发生这种情况的原因有很多。

目前在 Xcode 11.1 中你可以做到。

id x = nil;
[x name];

这将编译,没问题。但是:

NSObject *x = nil
[x name];

不会编译,因为编译器将最有可能的选择器识别为 NSLayoutAnchor.h 中的 API_UNAVAILABLE(可能)。

如果编译器有更多信息,它可以映射正确的选择器。这可能就像在失败的 .m 文件中包含任何具有 name 属性的 header 一样简单。

我的猜测是在 NUIPShiftReduceGotoTable.m 中添加一行#import"NUIPRule.h"

关于ios - “名称”不可用 : not available on iOS - XCode11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58408139/

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