繁体   English   中英

构建消息错误时的 ARC 弱引用

[英]ARC Weak References when building message error

当我在 iOS 中使用 Capacitor 构建我的 Ionic 应用程序时,出现此错误:

ARC 弱引用 - 无法使用手动引用计数在文件中创建弱引用

Xcode 消息错误 ARC 弱引用

该错误似乎来自 Cordova 插件,但我使用了电容器。 我多次尝试重新安装环境和项目,但自一周以来仍然被阻止。 非常感谢

我有完全相同的错误,我是这样修复的:

  1. 在您的项目导航器 (Xcode) 中,单击 Pods
  2. 在第二个选项卡中,单击 Targets -> CordovaPlugins
  3. 对主项目(应用程序)执行相同的操作,将“手动保留发布中的弱引用”更改为是。
  4. 建造

这取决于您的构建结果,但在那之后,我不得不在 CordavaPlugins 文件中替换值的类型。 它是“__weak ....”,我替换为“__strong ....”。

第一次,我从这里走: https : //stackoverflow.com/a/62679942/1979190

但是这种方式会导致许多问题,如EXC_BAD_ACCESS因为某些 Cordova 插件不支持这种方式。

我的队友找到了解决此问题的方法。 根本原因来自电容器,我不知道他们为什么将Compiler flags设置为-fno-objc-arc所有来自CordovaPlugins文件。

我们只需要像下图一样将Compiler flags恢复为empty ,以避免与ARC Weak References相关的所有错误消息。

在此处输入图片说明

但是每次运行npx cap updatenpx 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

希望有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM