Ios dyld:未找到符号:\u UITransitionContextFromViewControllerKey

Ios dyld:未找到符号:\u UITransitionContextFromViewControllerKey,ios,iphone,ios6,crash,dyld,Ios,Iphone,Ios6,Crash,Dyld,我收到报告说我的应用程序在iOS 6上加载时崩溃。它使用iOS8SDK构建,在7和8上运行良好。 我刚刚设法找到一台iOS 6设备进行测试,它在启动时确实会崩溃,并出现以下错误: dyld:未找到符号:\u UITransitionContextFromViewControllerKey 引用自: /var/mobile/Applications/895BC1B3-A362-42C9-8560-5CF40A682A10/myapp.app/myapp 预期位于:/System/Library/F

我收到报告说我的应用程序在iOS 6上加载时崩溃。它使用iOS8SDK构建,在7和8上运行良好。 我刚刚设法找到一台iOS 6设备进行测试,它在启动时确实会崩溃,并出现以下错误:

dyld:未找到符号:\u UITransitionContextFromViewControllerKey
引用自: /var/mobile/Applications/895BC1B3-A362-42C9-8560-5CF40A682A10/myapp.app/myapp 预期位于:/System/Library/Frameworks/UIKit.framework/UIKit中 /var/mobile/Applications/895BC1B3-A362-42C9-8560-5CF40A682A10/myapp.app/myapp

我知道
dyld
是一个链接器问题,但不知道从哪里开始。 我已取消链接并重新添加UIKit,但仍然无法正常工作


谢谢

看起来像是在使用UIViewControllerContext转换。它仅在iOS 7+上可用


有关更多详细信息,请参见此问题

这是因为
UITransitionContextFromViewControllerKey
不存在。解决这个问题可能不值得付出努力——这意味着放弃所有使用
UIViewControllerContextTransitioning
,因为该协议在iOS 7中是新的,或者为iOS 6创建单独的代码路径。如果这是您想要的,尽管这可能会发生。谢谢,我在代码中找不到任何关于
UITransitionContextFromViewControllerKey
的参考,这就是我感到困惑的原因。将
UIKit
framework设置为optional将停止崩溃,但这是正确的做法吗?可能是一些生成的代码(例如,来自Interface Builder的代码)正在使用该符号。如果要链接到任何静态库,则它们可能正在导入符号。如果您的应用程序正在从ViewControllerKey导入
UITransitionContextFromViewControllerKey
,则意味着存在一些代码路径,而不一定是您编写的代码。在iOS 6上,它将是
NULL
。这可能会也可能不会导致坏事发生。如果你想深入挖掘,你可以使用
otool-tvV
来分解你的应用程序,查看UITCFVCK的引用位置,并评估你的风险水平。我可能只是不支持iOS 6。谢谢你的解释。我会尝试一下otool并权衡一下我的选择。罪魁祸首是Avariy,他们的文档中确实提到了弱链接UIKit,但我猜经过多年的更新,人们不会每次都阅读安装文档。