ios运行ios 崩溃捕获怎么办

&&|&&责编:魏景芳
●慎重升级&报告称iOS&8崩溃率较iOS&7高78%&&&&移动应用程序绩效管理公司Crittercism称,iOS&8系统的稳定性比iOS&7更低,崩溃率甚至较后者高出近78%。报告显示,搭载iOS&8设备的平均崩溃率为3.56%。其中,iPhone&6运行iOS&8的平均崩溃率为2.63%;iPhone&6&Plus运行iOS&8的崩溃率为2.11%;再之前的几代崩溃率则高达3.57%。【】&&&&Z点评:很多人都在反映iOS&8中出现了不少Bug,看来8.0.1的更新已经提上日程了。慎重升级&报告称iOS8崩溃率较iOS7高78%(图片来自The&Verge)●iPhone&6和Plus上市首周末销量超1000万部&&&&苹果公司今日宣布,iPhone&6和iPhone&6&Plus上市首个周末销量超过了1000万部,创历史最高纪录。据悉,iPhone&6和iPhone&6&Plus与9月19日在美国、澳大利亚、加拿大、法国、德国、中国香港、日本、波多黎各、新加坡和英国开售。此前,库克曾声称,苹果的两款新iPhone手机将会激起“全新的升级浪潮”。【】&&&&Z点评:亲,你的iPhone&6到货了吗?●良心价:黑莓Passport裸机售价599美元&&&&黑莓CEO程守宗表示,新款旗舰手机Passport将在发布后立刻在部分零售店上架,两周内还将登陆更多市场。该机在美国的裸机零售价为599美元(约合3677元人民币),低于苹果iPhone&6和三星Galaxy&S5。据了解,苹果iPhone&6和三星Galaxy&S5的裸机起价均为650美元,iPhone&6&Plus和Galaxy&Note4起价则在此基础上分别高出100美元。【】&&&Z点评:黑莓手机的价格总算亲民了,可是与苹果和三星相比,生态系统还是硬伤。黑莓Passport裸机售价599美元(图片来自Digital&Trends)●运行64位&L系统&谷歌Nexus&9曝光&&&&为了Nexus&9,HTC的开发人员曾多次飞往山景城,与谷歌的工程师探讨产品。Nexus&9采用8.9寸分辨率显示屏,搭载主频为2.5GHz的Tegra&K1处理器,和高通MDM9X25基带,提供索尼制造摄像头。值得一提的是,Nexus&9将运行64位Android&L操作系统。【】&&&&Z点评:谷歌的silver计划搁浅,Nexus还能坚持一段时间,AndroidL的全新设计语言体验到底如何呢?●苹果iPad&Air2或十月发&mini&3明年上市&&&&台湾媒体援引供应链的消息称,新款iPad&Air平板电脑将于十月发布,截至年底iPad&Air&2以及Retina屏iPad&mini出货预计约3000万台,平均每个月出货750万台,相比先前平均约400至450万台的出货量增长约60%。新款Retina屏iPad&mini将很可能不会与iPad&Air&2同时上市,前者将推迟至2015年初,而12.9英寸iPad&Pro则在明年第二季度开始量产。【】&&&&Z点评:在当前iPad业绩的情况下,下一代产品能否挽回颓势呢?●集约资源:微软研究院机器人团队已解散&&&&微软研究院机器人团队负责人Ashley&Feniello表示,微软研究院中的机器人团队也已经关闭。不过须注意的是,微软公司则没有公开宣布这一决定,不知道这是微软的局部调整,还是微软研发战略性变化。据了解,在9月19日,微软宣布裁员2100人,而该计划是之前1.8万人裁员计划的一部分,并且微软还关闭了硅谷研究院。不过,全球其他11个微软研究院仍将继续运作。【】&&&&Z点评:纳德拉对微软的战略进行了大改造,解散了颇具前途的机器人团队,更好的科研项目值得期待。集约资源:微软研究院机器人团队已解散(图片来自Gizmag)●新华社:微软Xbox&One国行版9月29日上市&&&&新华社微博报道称,微软已经确定将在将于9月29日在中国大陆地区推出Xbox&One,比原定时间晚6天。Xbox&One国行版分为两个版本,3699元的家庭娱乐版不包含Kinect,只包含游戏主机和一个游戏手柄,赠送截至3月31日的Live金会员资格,以及《明星高尔夫》和《无冬ONLINE》两款游戏。【】&&&Z点评:考虑到延期发售和水货市场冲击等因素,国行Xbox&One的吸引力还会那么大吗?
下载中关村在线Android 客户端
下载中关村在线 iPhone 客户端
下载中关村在线Windows8客户端
成为中关村在线微信好友您的位置: >
> 苹果IOS最新短信BUG,一条短信直接崩溃iPhone(附解决方法)
苹果IOS最新短信BUG,一条短信直接崩溃iPhone(附解决方法)
 发布日期: 20:48 
iPhone 又出 Bug 了!国外有网友发现,只要给用 iPhone 的好友发送一段含有特殊字符的短信或者是 iMessage 消息,就会让对方的 iPhone 崩溃重启,几乎所有iOS设备躺枪。这条信息最先出现在 Reddit 网站。
لُلُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ
如果用户接收到这条短信,就会导致短信程序崩溃,手机重启。如果以短信应用的消息列表打开收到的短信,则会发生再次崩溃,如果进入了这条包含特殊字符的消息列表,这个对话窗口并不会崩溃,但如果再跳转到其他对话,消息应用又会崩溃,进入一个死循环。
这个 BUG 目前影响苹果运行 iOS 8.3 的设备,包括 iPhone 和 iPad,也包括其他版本的 iOS 系统。如果 iPhone 处于安全模式下,则攻击不会生效,如果 iPhone 已经越狱,则越狱的 iPhone 会转入到安全模式。
这可能是 iOS 通知中心预览功能处理 Unicode 字符时存在的一个 BUG,通知中心会在推送时会直接打开预览功能,所以会导致整个系统崩溃。
如果收到这种短信,解决的办法有以下几种,例如能够在短信应用打开这条短信,可以回复对方一条短信来解决崩溃(例如再发送一条同样的短信进行报复 XD),如果是在消息列表中收到这种短信,可以尝试使用其他方法例如语音控制或者是社交软件分享一条消息给自己来解决崩溃。
目前苹果已经知道了这个问题,正在进行修复,会不会提前发布小更新或者让 iOS 8.4 提前发布暂时还未清楚。
解决方法:
最简单的方法:亲测可行,让给你发这个消息的人再重新发一个随意短息就行了
其它方法:如果收到这种短信,解决的办法有以下几种,例如能够在短信应用打开这条短信,可以回复对方一条短信来解决崩溃(例如再发送一条同样的短信进行报复 XD),如果是在消息列表中收到这种短信,可以尝试使用其他方法例如语音控制或者是社交软件分享一条消息给自己来解决崩溃。
还可以设置里找删除30天内短信 然后把系统时间往后调30天 就全自动删除了
目前苹果已经知道了这个问题,正在进行修复,会不会提前发布小更新或者让 iOS 8.4 提前发布暂时还未清楚。
相关文章:
相关软件:
有任何意见或者建议请联系邮箱:[或
本站部分内容收集于互联网,如果有侵权内容、不妥之处,请联系我们删除。敬请谅解!
Copyright © . All Rights Reserved2642人阅读
跟我一起学习如何调试和修复可怕的应用程序崩溃问题吧!
要做的第一件事是:不要惊慌!
修复崩溃并不费劲。如果你已经阵脚大乱,可能是你把情况想的太严重了。不要指望说句咒语就能让bug奇迹般地消失,你需要采取有条不紊的方法,学会通过崩溃找出原因。
首先是要在你的代码中找出发生崩溃的确切位置:在哪个文件的哪一行。Xcode调试器会帮助你,不过你也要明白如何充分地运用它,这也正是本教程将向你展示的!
本教程面向所有开发人员,从初级到高级。即使你是一个经验丰富的iOS开发者,也可能会找到一些技巧和窍门。
下载。正如你所看到的,这是一个错误的程序!当你在Xcode中打开该项目,显示至少有八个编译器警告,这通常是麻烦的前兆顺便说一下,本教程我们使用Xcode4.3,当然4.2版应该工作也很好。
注:要跟随本教程,应用程序需要运行在iOS 5的模拟器上。如果您运行应用程序在真机上,也还是会崩溃,但崩溃发生的顺序可能不同。
运行这个app,看一看发生了什么。
嗨,它崩溃了!:-(
崩溃的发生分两种情况:SIGABRT(也称为EXC_CRASH),EXC_BAD_ACCESS(也可以显示在SIGBUS或SIGSEGV的名字下)。
SIGABRT是很好解决的,因为它是可控的。终止该app的原因是系统发现这个app做了一些未经允许的事。相反,EXC_BAD_ACCESS难解决很多,因为它只发生在应用损坏的状态下,通常是由内存管理问题引起的。
幸运的是,这第一次崩溃(后续还多着呢)是一个SIGABRT。SIGABRT崩溃发生时通常都会在Xcode的调试输出窗格(窗口的右下角)输出一个错误消息。(如果你看不见调试输出窗格,点击Xcode窗口右上角那三个视图图标的中间那个,就会显示出调试区域了。如果调试输出窗格还是看不到,你可能还得点击调试区域右上角那三个视图图标(挨着搜索区域的那三个)的中间那个)。在本例中,崩溃信息是这样的:
09:54:39.538 Problems[393:c07] -[UINavigationController setList:]: unrecognized selector sent to instance 0x6ed5800
09:54:39.563 Problems[393:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationController setList:]: unrecognized selector sent to instance 0x6ed5800'
*** First throw call stack:
(0x14a4052 0xea4d0a 0x14a5ced 0x140af00 0x140ace2 0x251f 0x129d6 0x138a6 0xf8 0x16aa9 0x138efa9 0xx13dd022 0x13db90a 0x13dadb4 0x13daccb 0x132a7 0x14a9b 0x23c2 0x22f5)
terminate called throwing an exception(lldb)&
学会解读这些错误消息很重要,因为它们含有能指明错误如何发生的重要线索。这里,有用的部分是下面这句:
-[UINavigationController setList:]: unrecognized selector sent to instance 0x6ed5800
这条错误消息的意思是该app试图调用了不存在的方法。通常这种崩溃都是由于对象调用了它自己没有实现的方法。这里的对象是UINavigationController(内存地址0x6ed5800),方法是&setList:。
知道崩溃的原因是一个良好的开端,但你最先要做的是修复代码中的错误。你需要找到源文件的名称和错误发生的行数。你可以借助调用栈来寻找(也被称为堆栈跟踪或回溯)。
app崩溃时,Xcode窗口的左窗格会切换到Debug导航。它显示了应用程序中的活动线程,并突出崩溃的线程。通常线程1,就是app的主线程,也正是做绝大部分工作的地方。如果你的代码使用了队列或后台线程,那么app也可以在其他线程崩溃。
目前,Xcode把main.m文件的main()函数作为问题的根源突出显示了出来。这并不能说明多少,所以你必须深入挖掘信息。
要看到更多的调用堆栈,拖动调试导航器底部的滑块一直到右边。这会显示崩溃时完整的调用堆栈信息:
列表中的每一条都是app或者ios框架中的一个函数或方法。堆栈调用会展示出当前在app中活动的函数或方法。调试器已经终止了app,及时冻结了所有函数和方法。
最底部的函数是最先调用的。当它执行到某处时调用了它上面的函数。这是应用程序的起点,它总是会在底部。&main()依次调用&UIApplicationMain()。就是编辑窗口绿色箭头指向的那行(xcode右侧窗口中突出显示那行)。
进一步追溯堆栈,UIApplicationMain()调用了UIApplication对象的方法_run,它有调用了CFRunLoopRunInMode(),接着又调用了CFRunLoopRunSpecific(),依次类推,直到调用__pthread_kill。
除了main(),堆栈调用中的其他所以函数和方法都是灰色的。这是因为他们来自内置的iOS框架。看不到它们的源代码。
在这个堆栈追踪中,可以看到源代码的只有main.m,正如xcode源码编辑器显示的。不过这并不是崩溃产生的真正源头。这往往会弄晕了新的开发者,不过一会儿我会告诉你如何理解它。
幸好,点击堆栈追踪中的任何一个条目,都会看到一堆汇编代码,而这些很可能对你一点也没有。
噢,但愿我们能有源代码!:-)
那么,如何在代码里找到引起崩溃的那一行呢?嗯,无论何时当你看到象这样的堆栈追踪时,程序都会抛出一个异常。
当程序被发现正在做一些它不该做的事时,就会发生异常。&你现在看到的是这个异常的后果:应用程序做错了什么,异常被抛出,,Xcode显示给你结果。&理想情况下,你想要清楚地看到该异常被抛出的地点。
所幸,你可以使用异常断点让xcode在那一瞬间暂停程序。断点是一种调试工具,它可以让你的app在某一时刻暂停。在本教程的第二部分,你会看到更多的断点,不过此刻,你看到的这个断点会在异常抛出前一刻暂停程序的。
要设置异常断点,我们必须切换到断点导航:
底部是一个小的+按钮。单击此按钮并选择“Exception Breakpoint”断点:
一个新的断点将被添加到列表:
单击“完成”按钮关闭弹窗。注意,xcode工具栏中的断点按钮现在已经被开启。如果你要运行的程序没有任何断点,你就可以点击这个按钮来关闭它。但现在,保留它,并再次运行应用程序。
真好!源代码编辑器现在指向了代码中的一行——没有讨厌的汇编东东——注意左边的调用堆栈(你可能需要通过调试导航切换到调用堆栈,这取决于你在xcode中的设置)看起来也不同了。
显然,罪魁祸首就是AppDelegate文件中application:didFinishLaunchingWithOptions:&方法里的下面这一行:
viewController.list = [NSArrayarrayWithObjects:@&One&,@&Two&];
再次来看错误信息:
14:42:21.684 Problems[835:c07] -[UINavigationController setList:]: unrecognized selector sent to instance 0x6cb71c0
代码中,viewController.list=xxx实际上是在调用setList:方法,因为list是MainViewController 类里的一个property。然而,根据错误消息显示,viewController变量不指向MainViewController对象,而是指向一个UINavigationController 对象——当然,UINavigationController没有&“list” property!这里把它们混淆了。
打开Storyboard文件,看一看窗口的rootViewController实际上指向什么:
啊哈!其实storyboard的初始视图控制器是一个导航控制器。这也就解释了为什么window.rootViewController&是一个UINavigationController的对象,而不是你所期望的MainViewController。为了修复这个bug,用以下内容替换application:didFinishLaunchingWithOptions:&
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( *)launchOptions
UINavigationController *navController = (UINavigationController *)self.window.rootViewC
MainViewController *viewController = (MainViewController *)navController.topViewC
viewController.list = [ arrayWithObjects:@&One&, @&Two&];
return YES;
首先,你从self.window.rootViewController得到UINavigationController的一个引用,一旦有了这个引用,你就能通过询问导航控制器的topViewController取得指向MainViewController的指针。现在,viewController变量应该指向了正确的对象。
注意:无论何时得到“unrecognized selector sent to instance XXX” 的错误,请检查对象的类型是否正确以及它是否有这个名称的方法。通常你会发现你在对一个不对的对象调用这个方法,由于指针变量所指向的值不对,它根本就不是你要的那个对象。
这种错误的另一常见原因是&方法名称的拼写错误。稍后你会看到一个这样的例子。
你的第一个内存错误
此刻应该已经修复了第一个问题。再次运行该应用程序。哎呀,它在同一行又崩溃了,只是这次是一个EXC_BAD_ACCESS错误。这意味着应用程序有一个内存管理问题。
与内存相关的崩溃源头是很难定位到的,因为罪魁祸首很可能是程序之前已经执行过的。如果发生故障的代码片段破坏了内存结构,直到很久以后此结果才会出现在一个完全不同的地方。
事实上,测试时这个bug可能永远都不会出现,只会在你的用户们的设备上张牙舞爪。你不希望这样的事情发生!
然而,这种特殊的崩溃是很容易修复的。如果你看看源代码编辑器,Xcode已经在这一行警告过你了。看到紧挨着行标左侧的黄色三角了吗?这是编译器警告。如果你点击黄色三角形,Xcode应该会弹出一个这样的“修复”建议:
在警告中提及的地点,代码通过赋值一个对象列表初始化了一个NSArray 对象,而此种列表应该是以nil结尾的。不过代码并没有这么写,所以NSArray被弄迷糊l
了。它试图读取不存在的对象,所以app崩溃了。
这是一个不该犯的错误,特别是xcode都已经警告过你了。通过下面的方法为列表添加nil来修复代码(或者,你可以简单地选择“修复”菜单选项):
viewController.list = [ arrayWithObjects:@&One&,@&Two&,nil];
“这个类不支持键值编码兼容”
再次运行应用程序,看看这个项目里还为你藏了哪些其他有趣的bug。你是怎么知道的?它再次在main.m里崩溃。异常断点仍处于启用状态,我们看不到应用程序的任何源代码处于高亮显示,这次崩溃真的没有发生在app的源代码中。调用堆栈证实了这一点:除main():以外,其余方法都不是app的。
如果从上往下浏览这些方法名,你会发现好多都是关于NSObject的和键 -值编码的。其下方有一个&[UIRuntimeOutletConnection connect]的调用。我不知道那是什么,不过看起来是和连接outlets有关的。其下方是一些关于从nib文件加载views的方法。以上这些就已经给我们提供了线索了。
不过Xcode的调试窗格中并没有直观的错误信息。这是因为还没有异常被抛出。在调试窗格告知我们异常发生原因之前,异常断点已经暂停了程序。在启用异常断点的情况下,有时可以获得部分错误信息,有时则不能。
要看到完整的错误信息,点击“调试”工具栏上的“继续执行程序”按钮:
你可能还需要再次点击它,然后会获得完整的错误信息:
Problems[14961:f803] *** Terminating app due to uncaught exception 'NSUnknownKeyException',
reason: '[&MainViewController 0x6b3f590& setValue:forUndefinedKey:]: this class is not
key value coding-compliant for the key button.'
*** First throw call stack:
(0x13ba052 0x154bd0a 0x13b9f11 0x9bf7b 0x922eeb 0x93dd60 0x2bbe1a
0xx22f46e 0xd6e2c 0xd73a9 0xd75cb 0xd6c1c 0xfd56d 0xe7d47 0xfe441 0xfe45d
0xfe4f9 0x3ed65 0x3edac 0xfbe6 0x108a6 0x1f743 0x201f8 0x13aa9 0x12a4fa9 0x138e1c5
0x12ff190a 0x12f0db4 0x12f0ccb 0x102a7 0x11a9b 0xe5)
terminate called throwing an exception
像之前一样,你可以忽略底部的那些数字。它们代表了调用栈,但在左侧调试导航栏里,你已经拥有了一个更方便 - 可读的格式。
有意义的点是:
NSUnknownKeyException
MainViewController
“this class is not key value coding-compliant for the key button”
异常的名称,NSUnknownKeyException,通常是错误的很好说明。它告诉你在某处有一个&“unknown key” 。显然,某处就是MainViewController,the key就是&“button”。
正如我们已经建立的,这一切都发生在加载nib文件时。虽然这个app使用的是storyboard,不是nibs,但就内部实现而言,storyboard就是nibs的一个集合,故一定是storyboard那里出了问题。
检查MainViewController中的outlets:
在连接检查器里,可以看到试图管理器中心的按钮是与MainViewController的按钮出口连接着的。storyboard/nib连接了出口button,但是错误信息指出不能找到此出口。
看看MainViewController.h:
button的@property 定义是存在的,那么问题在哪呢?如果你有注意到编译警告的话,可能已经找到了。
要是还没有,就去查看一下MainViewController.m里的@synthesize list.现在看到问题所在了吗?
代码实际上并没有@synthesize button。
未完待续!
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:76379次
排名:千里之外
转载:75篇
(1)(1)(2)(1)(78)欢迎登录996通行证
两周内自动登录
还没有帐号,现在
iOS 8.4插件Activator崩溃怎么办 解决办法
  PP助手已经推出iOS&8.4完美越狱了,不少用户都对系统进行了重新越狱。不过在iOS&8.4&的越狱设备上安装了Activator&的正式版的话,那么设备就可能会出现注销并进入安全模式的情况。那么Activator崩溃怎么办?今天小编给大家带来iOS8.4&Activator崩溃解决办法。&&  问题源于许多插件都依赖于&Activator,但&Activator&正式版目前又尚未支持&iOS&8.4,所以就会出现无限安全模式。&  为此&Activator&的作者&Ryan&Petrich&又放出了一个&Activator&的&Beta&版本,该&Beta&版本支持&iOS&8.4&的越狱,想要下载该&Beta&版本的用户需要先添加&Ryan&的源,然后搜索&Activator(1.9.4&beta&1)。&&  值得提醒用户注意的是,该&Beta&版本稳定性目前未知,因为时间紧迫所以还处于阶段,不过顺利安装该Beta版本的用户应该就可以在&iOS&8.4&的设备上使用依赖&Activator&运行的插件了。&  【iOS8.4完美】&&  【iOS8.4正式版固件下载】&&  【PP助手特别策划】&&  【越狱常见问题反馈专区】&&  【iOS8.1完美越狱插件清单】&&
关注手游动态,了解手游活动信息。微信搜索game996或扫描二维码 996,推荐真正好玩的手机游戏!
请文明发言,996有你更精彩!
手机游戏礼包免费拿
苹果游戏推荐
安卓游戏推荐
热门专区游戏
友情链接:
分享到微信朋友圈
打开微信,点击界面右上角魔术棒,选择"扫一扫",然后点击右上角分享按钮

我要回帖

更多关于 ios系统崩溃怎么办 的文章

 

随机推荐