奔溃问题总结篇

点击通知启动进入app,直接闪退提示

application windows are expected to have a root view controller

原因是过早在应用中显示通知内容,另外给window设置好rootViewController,视图未出现即显示其它子控件

 

刷新UITableView数据时出现奔溃

调用:

[listView reloadSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 4)] withRowAnimation:UITableViewRowAnimationAutomatic];

改成

[listView reloadData]

可以解决(问题出现在iOS11之前的版本,应该是UITableView改版,将布局代码执行的顺序改变导致低版本布局出问题)

除了reloadData方法,其他reload方式,如果存在indexPaths的变化,必须写在beginUpdates和endUpdates之间,同时使用insertRows和deleteRows说明indexPaths的变化情况,否则会出现Crash。

 

在AVAudioEngine使用过程中,设置属性并且调用了[[AVAudioSession shareSession] setAvtivite:YES error:nil];导致设置不成功(具体不明确)而奔溃

 

https://www.jianshu.com/p/6492779cb89e  由于给定的图片格式导致在iOS9.3之前的版本出现奔溃

 

由于权限未定义或者未赋予导致奔溃

 

由于需要主线程进行的视图更新在子线程中进行了导致奔溃

 

由于在销毁对象时对象无法销毁导致奔溃(SGRMTP中出现,直接去掉该属性)

 

下面的代码会?Compile Error / Runtime Crash / NSLog…?

@interface NSObject (Sark)
+ (void)foo;
@end
@implementation NSObject (Sark)
- (void)foo {
NSLog(@"IMP: -[NSObject (Sark) foo]");
}
@end
// 测试代码
[NSObject foo];//一个类也是一个NSObject对象?所以也通过NSObject对象方法来执行
[[NSObject new] foo];

测试结果:如果在同一个类.m里面则会出现一个警告,但是都能正常输出(编译时都能找到方法,但是警告类方法未实现)

拓展一:如果不是NSObject执行会crash(找不到类方法的实现,说明之前的能执行是因为还是NSObject对象来执行的)

拓展二:改为ViewController的分类以后,在同一个文件中,执行[[ViewController class] foo]; 结果为编译不报错,执行时报错。

posted @ 2018-03-09 11:19  雨筱逸悠  阅读(174)  评论(0编辑  收藏  举报