簡體   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