IOS和carsh说再见

起因


工作有空没任务就恶补一下基础东西就好了!

错误类型


  • 1 空指针 (根本问题)
  • 2 越界 (根本问题)
  • 3 项目文件xib引用错误 (衍生问题)
  • 4 服务端返回错误 (衍生问题)
  • 5 三方SDK启动失败 (衍生问题)

解决方法


别人家的carsh总结参考

部分基类carsh扩展处理源文件

gitHub地址

中国版github地址

使用


开启

//将原文件引入就可以了
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
	//在初始化引用,测试debug建议注释,
	[JQSafeKit becomeEffective];
}

检测


//你如果想要得到导致崩溃的原因,你可以在AppDelegate中监听通知,代码如上面英文所述
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dealwithCrashMessage:) name:JQSafeKitNotification object:nil];

总结


原理

  • 1 利用runtime动态机制,装系统默认的 类方法 或 实例方法,交换为自定义方法!
  • 2 将容易出错的系统方法加入拦截! 里面使用 try catch 处理!
  • 3 如果增做处理

优点

  • 1 统一处理,基本所有类型都可以按需要定制
  • 2 性能应该不错,try catch 影不影响性能暂时不确定!我个人理解是影响的,但是相对于UI刷新之类来说,影响不大!(java try catch 不影响性能)