尝试进入AFNetworking代码会生成以下警告:

[Project Name] was compiled with optimization - stepping may behave oddly; variables may not be available.

当然,我不能调试代码。具体来说,我试图调试UIImageView+AFNetworking类别,这似乎是不可能的。改变代码没有效果(尝试NSLog等),当尝试进入编译器时,进入汇编代码,并显示UIImageView+TVASTAFNetworking作为类别名称,这在代码库中不存在。

使用Xcode 7。iOS 9和8。Cocoapods(无框架)

更新 我忘了提到,优化器在发布和调试配置中都被设置为none,实际上我正在使用调试配置。

更新2

条带调试符号也关闭。


当前回答

如果你需要禁用你的Swift pod的优化,这样你就可以调试它们了,在你的Podfile中添加以下内容。这将只对调试版本禁用优化。

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      if config.name == "Debug"
        config.build_settings["SWIFT_OPTIMIZATION_LEVEL"] = "-Onone"
      end
    end
  end
end

其他回答

这个错误发生在我身上两次,每次都是用于请求服务的URL参数错误。 在一种情况下,URL在端口部分有一些空间,在另一种情况下,一些可选值没有被打开。

因此,解决方案是确保请求的url格式良好。更多关于我的案件的信息,类似的报道也在这里。

这就是我的解决方案……

根据gimino的回答,如果你使用cocoapods,在Podfile中添加如下一行:

xcodeproj 'MyProject', 'Debug - local'=>:debug, 'Debug - staging'=>:debug, 'Debug - PRODUCTION'=>:debug

或者对于cocopod版本>= 1.0(感谢Diejmon)

project 'MyProject', 'Debug - local'=>:debug, 'Debug - staging'=>:debug, 'Debug - PRODUCTION'=>:debug

其中MyProject有“调试-本地”,“调试-分期”,“调试-生产”作为调试配置,除了标准的“调试”

默认情况下,cocoapods通常会将pod配置生成为Release,这一行Podfile允许您告诉它它们是调试的。

如果你使用cocoapods和Objc,把下面的代码放在你的Podfile中,它适用于我的情况,注意选择config.name进行调试,不要更改Release

post_install do |installer|
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
          if config.name == 'Test'
              config.build_settings['GCC_OPTIMIZATION_LEVEL'] = 0
          end
      end
    end
end

我今天也遇到了同样的问题,并且解决了它(至少在我的情况下)。 我也使用CocoaPods,我在运行我的测试目标(Swift与ObjC混合)时遇到了这个问题。

我使用的是Xcode 7.2, iOS 9.2 SDK。

在下面的图片中,你可以看到在我的更改之前对目标和项目的优化:

令人惊讶的是,即使解决的优化是None [-O0],只有在将项目设置从-Os更改为-O0后,编译器才停止优化目标。

下面你可以看到我的最终设置:

经过很长时间,我终于解决了这个问题。有第三个优化标志LTO或链接时间优化,令人惊讶的是没有人有 我在这里提到过,但出于某种原因,我也没有注意到。它就在优化级别设置的上方,你可以在这里张贴的许多屏幕截图中看到。

总结一下,你需要关闭3个不同的优化标志进行调试:

LLVM链路时间优化(-flto) LLVM优化级别(-O) Swift编译器优化级别

更多关于LTO的信息: http://llvm.org/docs/LinkTimeOptimization.html