加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用Xcode 4.3.x构建适用于iOS 3.0的通用应用程序 – NSKeyedUna

发布时间:2020-12-14 17:30:28 所属栏目:百科 来源:网络整理
导读:尝试使用 Xcode 4.3.2构建和调试适用于iOS 3.0的通用应用程序.我从NSKeyedUnarchiver获得NSException.它似乎可能与无法读取主.xib文件有关.我已经看到了这个: iOS and unarchiving xib files – 然而,在这种情况下,不清楚应用程序是通用的(他们的解决方案不
尝试使用 Xcode 4.3.2构建和调试适用于iOS 3.0的通用应用程序.我从NSKeyedUnarchiver获得NSException.它似乎可能与无法读取主.xib文件有关.我已经看到了这个: iOS and unarchiving xib files – 然而,在这种情况下,不清楚应用程序是通用的(他们的解决方案不起作用)(注意:他们的解决方案不起作用,因为他们使用Xcode 4.2,而不是4.3).

这是错误输出:

2000-01-01 11:00:39.-19 myApp[664:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException',reason: '*** -[NSKeyedUnarchiver initForReadingWithData:]: incomprehensible archive (0x4e,0x49,0x42,0x41,0x72,0x63,0x68,0x69)'
2000-01-01 11:00:39.-01 myApp[664:207] Stack: (
        808001701,805397928,807551015,807550919,810902709,815043196,815042704,814682908,814682012,814970032,814968048,814966908,839149932,807750263,807747947,814678868,814672532,12253,12124
    )
    terminate called after throwing an instance of 'NSException'
    Not safe to look up objc runtime data.

解决方法

只是想我会分享我的解决方案,这个NSKeyedUnarchiver难以理解的归档xib错误.

我刚刚花了几个星期把头发拉出来,而我的解决方法与上面的borrrden相同(即使用使用旧版Xcode构建的nib文件).我尝试了一切我能想到的没有任何快乐的事情. (我的其他选择是停止使用xib文件并在代码中编写整个UI或停止支持iOS 3.0)

所以,这是我的情况,我如何让解决方法工作以及我如何为应用商店构建分发存档.

首先是一小部分背景:我的应用程序最初是使用Xcode 3.2.5构建的,并且在iOS 3.0及更高版本上运行良好.当我升级到Xcode 4.2时,我在应用程序加载xib文件后立即收到NSKeyedUnarchiver错误.经过一段谷歌搜索后,我遇到了这个帖子中提到的其他文章,所以我改变了每个xib文件的部署和开发版本.这是一种享受,直到我在错误返回时升级到Xcode 4.3.1.我重新检查了所有的xib文件但没有快乐.即使它们设置为iOS3.0 / IB3.0(并且我尝试了所有可用的组合),该应用程序仍然崩溃.

为了证明这是xib文件的一个问题,我尝试在设备上调试(运行iOS 3.0的第二代iPod Touch,通过电缆连接到Xcode).但是在调试器启动之前应用程序会崩溃.所以我从项目中删除了MainWindow.xib(在代码中设置了App Delegate和UIWindow).这允许调试器启动并点击我的第一个断点(第一行应用程序:didFinishLaunchingWithOptions),但是只要我推动ViewController,app就会挂起而不会抛出异常.经过大量挖掘后,我将调试器从LLDB切换到GDB(来自Products – > Edit Scheme).这阻止了应用程序挂起并按照我的预期抛出异常(难以理解的存档). LLDB显然仍有问题.

经过几个星期的拉动我的头发,唯一有用的是使用旧版Xcode构建的nib文件.幸运的是我仍然有Xcode 3.2.5坐在我的机器上.以下是我使用此步骤的步骤,并允许为应用商店构建存档:

>退出Xcode 4.3.1并启动Xcode 3.2.5.
>创建一个新的基于View的应用程序项目,并将主项目中的所有.xib文件添加到其中.
>将部署目标设置为iOS3.0,然后在设备上执行发布构建和运行(如果它不自动选择,请使用您的通用配置文件)
>从Xcode中,在Finder中显示.app,然后显示包内容以查看其中的所有.nib文件(Xcode已将.xib文件转换为.nib文件).
>为便于使用,请将.nib文件复制到另一个目录.
>退出Xcode 3.2.5并启动Xcode 4.3.1并打开您的项目.
>访问每个xib,从右侧边栏中取消选择目标成员资格中的应用程序(这意味着Xcode不会将这些.xib文件用于最终包).
>现在将所有新的.nib文件(由Xcode 3.2.5生成)添加到您的项目中(为了整洁,将它们放在他们自己的组中).
>现在您可以根据需要进行清理,构建和运行,甚至可以为应用商店构建存档.

要证明正在使用正确的.nib文件,请使用终端中的md5.在Finder中显示您的.app(或来自管理器的存档)以查看Xcode创建它的位置,然后显示包内容以查看.nib文件.将md5校验和与Xcode 3.2.5创建的.nib文件进行比较.

请记住,每次修改xib时,它都不会被使用,直到你从Xcode 3.2.5构建.并将生成的.nib文件复制到您的保留目录.

这并不理想,如果有人有更好的解决方案,我会热衷于听到它.与此同时,我希望这会有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读