iphone – 升级后iOS应用程序崩溃

参见英文答案 > What does this mean? “’NSUnknownKeyException’,reason: … this class is not key value coding-compliant for the key X”                                    66个
如果我运行干净的构建和全新的安装,我的应用程序安装并运行得很好,但是,如果我安装以前发布的版本,然后用新版本覆盖该版本,它将在首次运行时崩溃.

重现步骤

>在iPhone 4上安装并运行我的应用程序的先前版本(1.4).
>关闭应用并杀死进程.
>结帐最新版本(2.0)
>删除构建目录
>安装并运行
>崩溃

我正在运行Xcode 3.2.5,4.2 SDK.我的iPhone 4是4.2.1.

如果你查看崩溃日志,看起来我的一个NIB中的连接不正确,但没有对象试图连接到我的AppController中的’view’属性.有时会发生相同的崩溃,除非它会说这个类不是键值活动指示符的键值编码兼容.这也很糟糕,因为grep已经证实我的项目名为activityIndi​​cator,我什么都没有.

我有三个问题:

>为什么我的应用程序崩溃了?
>有人对我能做的进一步调试有任何想法吗?我已经完成了如何解决这个问题的想法.
>有可能(可能?)当Xcode在您的设备上安装构建时,它需要从商店安装应用程序时不会采用的快捷方式.有谁知道是否是这种情况,如果是这样,你知道一种方法来模拟确切的应用程序商店安装过程,所以我可以确保我没有杀死我的所有升级程序的应用程序?

崩溃日志

2011-02-10 06:58:32.115 TheApp[132:307] *** Terminating app due to uncaught exception 'NSUnknownKeyException',reason: '[<AppController 0x14d680> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x33ac0987 __exceptionPreprocess + 114
    1   libobjc.A.dylib                     0x3347b49d objc_exception_throw + 24
    2   CoreFoundation                      0x33ac0705 -[NSException dealloc] + 0
    3   Foundation                          0x3367db4f -[NSObject(NSKeyValueCoding) setValue:forUndefinedKey:] + 182
    4   Foundation                          0x3367d03b _NSSetUsingKeyValueSetter + 90
    5   Foundation                          0x3367eda3 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 194
    6   Foundation                          0x33630b17 -[NSObject(NSKeyValueCoding) setValue:forKeyPath:] + 130
    7   UIKit                               0x3224c60f -[UIRuntimeOutletConnection connect] + 66
    8   CoreFoundation                      0x33a63fc7 -[NSObject(NSObject) performSelector:] + 18
    9   CoreFoundation                      0x33a6cd51 -[NSArray makeObjectsPerformSelector:] + 388
    10  UIKit                               0x3224b577 -[UINib instantiateWithOwner:options:] + 586
    11  UIKit                               0x3224cb39 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 92
    12  UIKit                               0x3209e871 -[UIApplication _loadMainNibFile] + 96
    13  UIKit                               0x3209a1fd -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 180
    14  UIKit                               0x3206648b -[UIApplication handleEvent:withNewEvent:] + 1114
    15  UIKit                               0x32065ec9 -[UIApplication sendEvent:] + 44
    16  UIKit                               0x32065907 _UIApplicationHandleEvent + 5090
    17  GraphicsServices                    0x33b0ef03 PurpleEventCallback + 666
    18  CoreFoundation                      0x33a556ff __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 26
    19  CoreFoundation                      0x33a556c3 __CFRunLoopDoSource1 + 166
    20  CoreFoundation                      0x33a47f7d __CFRunLoopRun + 520
    21  CoreFoundation                      0x33a47c87 CFRunLoopRunSpecific + 230
    22  CoreFoundation                      0x33a47b8f CFRunLoopRunInMode + 58
    23  UIKit                               0x32099309 -[UIApplication _run] + 380
    24  UIKit                               0x32096e93 UIApplicationMain + 670
    25  TheApp                              0x00002781 main + 88
    26  TheApp                              0x00002724 start + 40
)

我应该补充一点,应用程序在进入我的任何代码之前崩溃,即应用程序:didFinishLaunchingWithOptions:和applicationDidFinishLaunching:永远不会被调用.

解决方法

我终于弄明白了问题所在.我的应用程序的先前版本未本地化,因此所有NIB都位于应用程序包的顶层.我的应用程序的最新版本已本地化,因此所有NIB都位于en.lproj目录中.当Xcode将应用程序部署到设备(和模拟器)时,它不会替换整个包,它只是将构建文件复制到现有包中.这导致我的NIB的两个版本,我的应用程序包顶层的过时版本和子文件夹中的当前版本.

设置应用程序时,它会拉动最顶层的NIB,这是不正确的NIB,导致崩溃.因此,我需要实际将.ipa部署到我的手机上以测试升级.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


在有效期内的苹果开发者账号(类型为个人或者公司账号)。还有一种情况,就是你的Apple ID被添加到公司开发者账号团队里面,这样也是可以的,但是需要叫管理员给你开通相应的账号权限,如下截图:这里可能有些同学会问,苹果开发者账号是什么?如何申请?那么可以看看我的上一篇文章:iOS苹果开发者账号(公司账号)申请流程详解能正常编译打包的iOS工程项目(都不能正常编译谈何出包上架
Appuploader官网--IOS ipa上传发布工具,证书制作工具跨平台版,windows,linux,mac系统都可用 (applicationloader.net)第一步:注册苹果开发者账号,访问以下网址,按照提示注册即可,因为不需要支付688认证苹果开发者,所以没什么好讲的。证书部分:主要是通过工具生成.p12证书文件,后面这个证书要导入mac系统。描述文件:这个文件主要包含了证书,公钥,设备信息等,具体可以百度了解详情。第三步:使用xcode打包导出ipa文件,供其他人内测。..........
苹果在9月13号凌晨(北京时间)发布 iOS 16,该系统的设备可能会因为各种原因,导致功能不可用和UI错乱等问题,我们需要做好适配iOS 16。
计算机图形学--OpenGL递归实现光线追踪
Xcode 14打出来的包在低版本系统运行时会崩溃,报错信息是Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib,在苹果开发者论坛搜索报错信息,可以看到会闪退的最高版本是iOS12.1(不敢肯定,毕竟我没测过,不过肯定低于iOS 12.4
iOS16手机开启开发者模式 "developer mode disable"Pod工程中的Bundle target签名报错
【计算机图形学】【实验报告】DDA画线算法、Bresenham中点画线算法、多边形填充算法(附代码)
iOS 16 满载全新的个性化功能、更具深度的智能技术,以及更多无缝的沟通与共享方式,让 iPhone 的体验更进一步。13、隐私权限增强,如通过 UIDevice 获取设备名称时,无法获取用户的信息,只能获取设备对应的名称。
3、回到苹果开发者中心,如下图,点击certificates,点蓝色小加号,就可以开始创建证书,创建证书的时候无论测试还是上传app store打包,都要选ios distribution app store and adhoc,不要选apple和develpment类型的证书。2、如下图,点左边的profiles菜单,点击蓝色加号,创建描述文件,创建过程中会要求我们选择描述文件的类型,假如你想发布app到app store,则选择app store,假如你想真机测试,则选择ad hoc类型。
需要:Unity,IOS平台模块,Xcode,IOS_SDk,MAC电脑,Iphone手机
最近下载安装 xcode 并解压安装,遇到一些问题误以为是错误,记录在此。从百度和谷歌上搜了很多帖子,发现并没有靠谱的 xcode 国内的镜像,这里提供一个可以跳转到官网的下载方式。xcode 不同版本的列表,下载时注意不同 macOs 不同的系统和 Xcode 版本的对应关系。如 要求 及其以上版本。https://xcodereleases.com/注意点击后会跳到官方下载地址,需要登录苹果账号。xcode 文件很大,通常要 10G 以上,下载速度很慢。可以考虑使用 Free Downlo
使用苹果登录作为第三方登录
missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun解决方法
Xcode14 正式版编译报错' does not contain bitcode.You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. file 'xxx' for architecture arm64解决方案
那应该和升级Xcode 14有关系。但是官方还没有给出解决方案。应该后续会有兼容的cocoapods 新版本。
项目中需要用到Xcode将C++代码输出的Mac版本的DLL文件即DYLIB文件,并能够使用C#代码调用。Unity与 DLL文件 ☀️| 怎样使用VC++生成一个DLL文件并调用!这次来看一下在Mac使用Xcode生成的方法吧!本文介绍了在Mac中怎样使用 Xcode项目使用C++生成 .dylib文件的方法。相对于在Windows中使用AndroidStudio创建动态链接库的方法来说,使用Xcode创建.dylib文件确实简单了很多。