'exported: true' 对 Xcode 12.5 中的“_specialize”属性没有影响

'exported: true' has no effect in '_specialize' attribute in Xcode 12.5

在我的机器上,Xcode 已自动升级到最新版本 Xcode 12.5。我现在在构建项目时遇到问题。昨天 Xcode 12.4 完美 运行,没有代码更改,也没有库更改。完全相同的代码库。

有人遇到这个问题并解决了问题吗?

收到错误消息:

'exported: true' has no effect in '_specialize' attribute

已尝试(但没有帮助):

  1. 重启机器
  2. 杀死并重启Xcode
  3. 清理构建
  4. 删除派生数据

我在使用 CryptoSwift pod 时遇到了同样的问题。 Xcode 12.5 使用 Swift 5.4。我认为 CryptoSwift 尚未针对 swift 5.4 进行更新。我切换回 Xcode 12.4 和 运行 pod 安装。它再次在 Xcode 12.4 上构建。最新版本的 CryptoSwift 只支持 Swift 5.3

更新

我无法让 CryptoSwift 使用 cocoa pods 更新过去的版本 1.2.0。我删除了 pod 并将其添加为 Swift 包(版本 1.4.0)。我能够使用 Xcode 12.5

进行构建

Confirmed this was fixed in CryptoSwift 1.3.2

  1. 删除旧版本
  2. 重新安装最新版本

我已经用 运行 pod update 解决了这个问题,而不是指向我的 Podfile

中的特定版本

否则,你也可以按照@coryhowell 指出的,

removed the pod and added it as a Swift Package (Version 1.4.0)

播客文件

platform :ios, '11.4'
use_frameworks!
inhibit_all_warnings!

target 'myAppp' do
  pod 'Alamofire', '~> 4.8.1'
  pod 'CryptoSwift'
end

Podfile.lock - 自动创建,然后指向最新版本的 CryptoSwift

PODS:
  - Alamofire (4.8.2)
  - Countly (20.11.1):
    - Countly/Core (= 20.11.1)
  - Countly/Core (20.11.1)
  - Crashlytics (3.12.0):
    - Fabric (~> 1.9.0)
  - CryptoSwift (1.4.0)
  - Device (3.1.2)
  - Fabric (1.9.0)

..
...
not showing all lines
....
......

这是因为@_specialize标签在Swift5.4(Xcode12.5)中改变了,你可以直接用正则表达式替换:

@_specialize\(([^,]+),\s([^)]+)\)
@_specialize\(\)

只需评论 all @_specialize(exported: true, where T == ArraySlice<UInt8>) 等等...它应该会起作用。