哪个是dyld`dyld_fatal_error的原因,这是iOS上不兼容的api?

mam*_*mcx 18 crash ios4 ios5 xcode4.2 automatic-ref-counting

我正在将部分项目转移到iOS 5/ARC.最古老的项目之一(iOS 4.2,支持iPod Touch 2g的armv6)给了我:

dyld`dyld_fatal_error:
0x8feb1070:  int3   
0x8feb1071:  nop    
Run Code Online (Sandbox Code Playgroud)

在发布图像之后,但在进入主图像之前.必须将一些lib /代码更新到iOS 5,但哪一个?是否可以使用比猜测更好的方法?

gru*_*oso 25

我自己尝试使用Xcode4.3.2和SDK iOS5.1 重现这个项目.问题是Xcode4.3.2上的标准项目模板为iOS5配置,它具有早期iOS版本不支持的一些功能.就我而言,我的iPhone3G运行iOS4.2时,GLKit框架被拉入并且不受支持.我得到的错误就像你的错误:

dyld`dyld_fatal_error:
0x2fe01080:  trap   
0x2fe01084:  mov    r0, r0
Run Code Online (Sandbox Code Playgroud)

仔细查看控制台输出后,您可以看到导致应用崩溃的原因:

dyld: Library not loaded: /System/Library/Frameworks/GLKit.framework/GLKit
Referenced from: /var/mobile/Applications/A60A53B1-F87D-467D-BB0B-82C603049202/HiJackInTheBox.app/HiJackInTheBox
  Reason: image not found
(lldb) 
Run Code Online (Sandbox Code Playgroud)

该错误意味着在安装应用程序的目标上的iOS驻留程序中找不到GLKit框架.框架被拉入Project-> BuildPhases-> LinkBinaryWithLibraries下的构建中.

因此,要纠正问题,我需要删除GLKit框架和所有引用它的代码.然后构建成功并在目标设备上运行.希望这可以帮助!


Rob*_*rto 5

如果你转到控制台输出,你会发出一个错误,告诉你设备中缺少哪个框架并导致问题(比如grundyoso在他的回答中说).

因此,为了解决这个问题,您可以转到目标的" 常规"选项卡,并在" 嵌入式二进制文件"部分中添加缺少的框架.

这会将框架复制到应用程序,以便在任何设备上都不会错过.