我正在尝试将一个旧的静态链接库转换为框架。在静态库中混合了swift和objective c,所有头文件都生成正确。但是,切换到框架目标并添加用@objc头标记的swift文件时,该类不会添加到-Swift.h头文件中。我可以导入头文件,但找不到swift类。这是在Xcode 10.2中进行的,使用了Swift 4.2和5.
在混合Objective C / Swift框架目标中,有没有任何特定的XCode设置会影响*-Swift.h头文件的生成?
我正在尝试将一个旧的静态链接库转换为框架。在静态库中混合了swift和objective c,所有头文件都生成正确。但是,切换到框架目标并添加用@objc头标记的swift文件时,该类不会添加到-Swift.h头文件中。我可以导入头文件,但找不到swift类。这是在Xcode 10.2中进行的,使用了Swift 4.2和5.
在混合Objective C / Swift框架目标中,有没有任何特定的XCode设置会影响*-Swift.h头文件的生成?
https://developer.apple.com/documentation/xcode_release_notes/xcode_10_2_release_notes
如果您正在构建一个包含Swift代码的框架,并使用lipo创建支持设备和模拟器平台的二进制文件,则还必须组合每个平台生成的Framework-Swift.h头文件,以创建支持设备和模拟器平台的头文件。在我的情况下,我只需要将Carthage更新到最新版本0.33.0即可。header_file="${TARGET_TEMP_DIR}/../${PRODUCT_MODULE_NAME}.build/DerivedSources/${PRODUCT_MODULE_NAME}-Swift.h"
header_dir="${BUILT_PRODUCTS_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}"
mkdir -p "$DIR"
echo "copying $header_file $header_dir"
cp -f "$FILE" "$DIR"
更新
将所有模块的Swift编译模式标记为“整个模块”似乎对此问题有积极影响,但我尚未完全测试。
(原始回答:Original Answer)