将我的macOS更新为10.15 Catalina,还将xcode更新为11.1。现在在构建代码时,出现错误“错误:未知类型名称'tls_protocol_version_t'”。我清理了构建文件夹,重置了xcode,清除了xcode缓存。似乎没有任何办法可以解决问题。
完整的错误日志如下-
在/ My Repo / MyApp / trunk / App / App-Prefix.pch:8中包含的文件中:
在/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h中包含的文件中: 12:
在/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h中包含的文件中: 128:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSURLSession.h:744:11:错误:类型名称未知'tls_protocol_version_t'
@property tls_protocol_version_t TLSMinimumSupportedProtocolVersion API_AVAILABLE(macos(10.15),ios(13.0),watchos(6.0),tvos(13.0));
答案 0 :(得分:0)
在MacOS 10.15.3上使用XCode 11.3.1时,我遇到了同样的问题:相当老的Objective-C应用程序不再生成该错误
Unknown type name `tls_protocol_version_t`
给。它使用一个预编译的头文件,我尝试按照建议的方式手动添加typedef定义,但这只会导致更多错误。
我最终直接在其中添加了typedef
NSURLSession.h
即以root用户身份编辑
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSURLSession.h
并在
之后添加以下typedefNSURLSessionTaskState
typedef:
typedef CF_ENUM(uint16_t, tls_protocol_version_t) {
tls_protocol_version_TLSv10 CF_SWIFT_NAME(TLSv10) = 0x0301,
tls_protocol_version_TLSv11 CF_SWIFT_NAME(TLSv11) = 0x0302,
tls_protocol_version_TLSv12 CF_SWIFT_NAME(TLSv12) = 0x0303,
tls_protocol_version_TLSv13 CF_SWIFT_NAME(TLSv13) = 0x0304,
tls_protocol_version_DTLSv10 CF_SWIFT_NAME(DTLSv10) = 0xfeff,
tls_protocol_version_DTLSv12 CF_SWIFT_NAME(DTLSv12) = 0xfefd,
};
答案 1 :(得分:0)
在一个相当老的项目和Xcode 11中,我也遇到了同样的问题。从另一个答案中添加tls_protocol_version_t
的typedef确实可行,但是显然不是理想的解决方案。
In注意到我在项目中有一个Security.framework
的副本,它不是“相对于SDK”而是“相对于组”(与SystemConfiguration.framework/
相同),所以我删除了这两个副本并重新包含在目标的“常规”>“框架”设置。那还不够。我注意到Foundation
不存在,所以我也添加了它。做到了。结论:检查您的框架!
答案 2 :(得分:-1)
不确定这是否正确,但是我在App-Prefix.pch中添加了以下代码,它解决了该问题。
typedef enum tls_protocol_version_t {
tls_protocol_version_TLSv10 = 0x0301,
tls_protocol_version_TLSv11 = 0x0302,
tls_protocol_version_TLSv12 = 0x0303,
tls_protocol_version_TLSv13 = 0x0304,
tls_protocol_version_DTLSv10 = 0xfeff,
tls_protocol_version_DTLSv12 = 0xfefd
} tls_protocol_version_t;