【问题标题】:ARC Weak References when building message error构建消息错误时的 ARC 弱引用
【发布时间】:2020-03-18 15:04:34
【问题描述】:
【问题讨论】:
标签:
ios
xcode
cordova
ionic-framework
capacitor
【解决方案1】:
我遇到了完全相同的错误,我这样修复了它:
- 在您的项目导航器 (Xcode) 中,单击 Pods
- 在第二个选项卡中,单击 Targets -> CordovaPlugins
- 执行与主项目(应用程序)相同的操作,将“手动保留发布中的弱引用”更改为是。
- 构建
这取决于您的构建结果,但在那之后,我不得不在 CordavaPlugins 文件中替换值的类型。它是“__weak ....”,我用“__strong ....”替换。
【解决方案2】:
第一次,我从这里走:https://stackoverflow.com/a/62679942/1979190
但是这种方式会导致很多问题,如EXC_BAD_ACCESS,因为一些 Cordova 插件不支持这种方式。
我的队友找到了解决此问题的方法。
根本原因来自电容器,我不知道他们为什么将Compiler flags 设置为-fno-objc-arc 用于来自CordovaPlugins 的所有文件。
我们只需要将Compiler flags 恢复为empty,如下图所示,以避免所有与ARC Weak References 相关的错误消息。
但每次运行npx cap update 或npx cap sync 时,所有内容都会重置为-fno-objc-arc ^^。
所以我们需要编写一个脚本,在我们运行这些命令后,将CordovaPlugins 中的所有文件的Compiler flags 设置为empty。
我们将在 Podfile (ios/App/Podfile) 下面添加这个脚本来完成这项工作。
post_install do |installer|
installer.pods_project.targets.each do |target|
if ['CordovaPlugins'].include? target.name
target.build_phases.each do |build_phase|
if (build_phase.display_name.eql? "Sources")
build_phase.files.each do |file|
if (file.settings)
settings = file.settings
settings["COMPILER_FLAGS"] = ""
file.settings = settings
end
end
end
end
end
end
end
希望对您有所帮助!