【问题标题】:Cannot build manual ref count CocoaPod无法构建手动引用计数 CocoaPod
【发布时间】:2014-11-11 19:11:48
【问题描述】:

我有一个 iOS CocoaPod,它作为 pod 已有几年的历史,而作为可重用组件则比它早几年。以前使用旧版本的 Xcode 构建。它是用“手动引用计数”开发的,并且仍然是“手动引用计数”。我现在正尝试将其导入“新”项目(实际上是从旧项目和手动引用计数重建),但我无法构建它。

正如我所说,封闭项目是手动引用计数,并且可以在没有安装 pod 的情况下以这种方式编译。 “构建设置”中的“自动引用计数”设置为“否”。

然而,即使 pods 项目中存在完全相同的 Build Settings “No”值,它总是会生成带有 -fobjc-arc 的编译脚本,并调用 retain 和 @987654323 @ 被标记为错误。 (例如,error: 'release' is unavailable: not available in automatic reference counting mode。)

Xcode 的版本是 6.0.1。

pod 的版本是 0.34.4(昨天新安装的)。

相关 pod 的 podspec:

Pod::Spec.new do |s|
  s.name         = "libXXX"
  s.version      = "1.0"
  s.summary      = "Exchange library for XYZ."
  s.description  = "Static library pod for the XXX framework."
  s.homepage     = "http://example.com"
  s.license      = { :type => 'MIT', :text => 'Copyright 2012 XYZ' }
  s.author       = { "Bill Nye" => "bnye@example.com" }
  s.source       = { :git => 'https://code.example.com/ios/XXX.git', :tag => '1.0' }
  s.platform     = :ios
  s.source_files = 'StaticLib/Headers/*.h'
  s.preserve_paths = 'StaticLib/libXXX.a'
  s.library = 'XChangeA'
  s.xcconfig = { 'LIBRARY_SEARCH_PATHS' => '$(PODS_ROOT)/libXXX/StaticLib' }    
  s.dependency 'libSignatureToken'
end

我尝试将 s.requires_arc = false 添加到 pod 规范(并执行 pod update),但没有任何改变。我也试过s.compiler_flags = '-fno-objc-arc',没有成功。

那么,如何说服 Xcode 使用手动引用计数来编译 pod?


已解决

显然,pod update 期间的“无关”问题导致它在未配置编译模式信息的情况下静默失败。反复运行pod update --verbose 有助于解决问题。

【问题讨论】:

    标签: ios objective-c xcode automatic-ref-counting cocoapods


    【解决方案1】:

    你需要使用s.requires_arc = false

    这已记录在 here。默认值最近从 false 更改为 true。如果您运行pod spec lint,也会出现此错误。

    【讨论】:

    • 也许你没有注意到,但我试过 requires_arc = false
    • 啊,是的,我确实错过了,因为它不在规范中。如果您可以提供一个在干净项目中不起作用的示例规范,请创建an issue
    猜你喜欢
    • 2015-08-18
    • 2016-07-08
    • 2015-05-20
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    相关资源
    最近更新 更多