当前位置: 首页 > wzjs >正文

移动端网站的重要性企业咨询管理公司是干嘛的

移动端网站的重要性,企业咨询管理公司是干嘛的,零食网站色调搭配怎么做,微信官方网站服务中心【iOS】iOS崩溃总结 一、前言 之前写了一篇博文《【Flutter】程序报错导致的灰屏总结》,浏览量、收藏率和点赞量还挺高,还被收录了,就想着总结一下iOS崩溃,这个也是在iOS面试中经常被问到的。 在 iOS 开发过程中,导致…

【iOS】iOS崩溃总结


一、前言

之前写了一篇博文《【Flutter】程序报错导致的灰屏总结》,浏览量、收藏率和点赞量还挺高,还被收录了,就想着总结一下iOS崩溃这个也是在iOS面试中经常被问到的

在 iOS 开发过程中,导致 App 崩溃的原因多种多样,大致可以分为以下几大类,
Alt
还是很想说,代码规范很重要,代码格式化也能方便我们查找BUG!!!


二、内存相关问题

  1. 访问野指针(野地址)

    • 访问已经被释放的对象(Use After Free)
    • 常见崩溃提示:EXC_BAD_ACCESSSIGSEGV
  2. 内存泄漏造成系统回收进程(OOM)

    • 未释放的内存持续增长,导致系统强制杀掉进程
    • 通常无法捕获崩溃日志,但系统会记录在 JetsamEvent
  3. 循环引用

    • block 中引用 selfdelegate 没有用 weak,导致对象无法释放

三、多线程问题

  1. 👉🏻 线程安全问题

    • 多线程读写同一数据结构,导致崩溃或数据错乱
  2. 👉🏻 死锁

    • dispatch_sync 嵌套调用自己,或等待永远不会结束的任务
  3. 👉🏻 后台线程更新 UI

    • UIKit 只能在主线程使用,在子线程操作 UI 会崩溃

四、数组、字典越界或非法数据

  1. 👉🏻 数组越界

    NSArray *array = @[];
    NSLog(@"%@", array[1]); // 崩溃
    
  2. 👉🏻 向不可变字典中插入 nil

    [@{@"key": nil} mutableCopy]; // 崩溃
    
  3. 👉🏻 非法类型转换

    • [someObject stringByAppendingString:@"test"],但 someObject 实际是 NSNull

五、KVO/KVC 相关

  1. 👉🏻 KVO 崩溃

    • 重复添加或移除观察者
    • 在对象释放前未移除观察者
    • 修改未定义 keyPath
  2. 👉🏻 KVC 崩溃

    • setValue:forKey: 时 key 错误
    • 对私有变量或不存在属性赋值

六、UI相关问题

  1. 👉🏻 约束冲突导致 UI 崩溃

    • AutoLayout 添加了冲突的 constraint
  2. 👉🏻 Storyboard / XIB 使用错误

    • IBOutlet 未连接或连接错误
    • 控件在 XIB 中已删除,但代码中仍引用
  3. 👉🏻 未处理的手势或交互崩溃

    • 比如使用 UIPanGestureRecognizer 时 target 指针已释放

七、文件和路径操作问题

  1. 👉🏻 文件路径为空或错误

    • 使用 NSString *path = nil; [NSData dataWithContentsOfFile:path];
  2. 👉🏻 访问沙盒外非法路径

    • iOS 不允许访问 App 沙盒外的文件路径

八、网络或 JSON 解析异常

  1. 👉🏻 JSON 结构变化或数据缺失

    • 使用 NSJSONSerialization 时返回了 null
    • 使用 Model 框架(如 YYModel、MJExtension)时解析 nil 或错误类型字段

九、未捕获的异常

  1. 👉🏻 未使用 try-catch 包裹潜在异常代码(如 NSException)
  2. 👉🏻 使用断言(NSAssert)在 Release 模式中崩溃

十、符号错误 / 动态库加载失败

  1. 👉🏻 dlsym 找不到符号

    • 使用动态库(如 C 语言、Go 编译为 static lib)时忘记导出符号或链接失败
  2. 👉🏻 调用系统私有 API

    • 在审核或某些系统中崩溃

十一、其他系统行为

  1. 👉🏻 App 被系统强制终止

    • 使用过多内存、后台违规行为等
    • iOS 低电量或资源紧张时杀掉后台 App
  2. 👉🏻 权限未申请导致崩溃

    • 相机、麦克风、定位等未正确配置权限描述

十二、总结&工具

👉🏻 总结

1. 内存相关问题
  • 针对于内存相关的崩溃,要养成良好的开发习惯,
    定期使用Instruments排查一下,还有就是内存泄露或者暴涨,可以在基类的销毁方法里面打印一下delloc,如果页面销毁没有打印,及时检查一下相关的逻辑,
  • 还有一些导致内存暴涨的,比如加载大图,如果使用imageNamed: 会缓存,可以使用imageWithContentsOfFile:;
  • 还有可以复用的场景,比如自定义的试图View;
2. 多线程问题
  • 关于线程不安全访问,可以用 dispatch_queue 同步访问共享资源,也可以用 @synchronized 或 NSLock 等锁机制,还可以封装线程安全类;
  • 对于死锁,避免 dispatch_sync 嵌套调用当前 queue,使用主线程 dispatch_async 更新 UI
  • 在子线程更新UI,可以使用 dispatch_async(dispatch_get_main_queue(), ^{ // UI操作 });
3. 集合类崩溃问题

这个就很好解决了,网上有封装好的安全插入或者存储的库,都是使用runtime写的。

4. KVO / KVC 崩溃
  • 可以封装 KVO,推荐使用 FBKVOController,iOS 11 起建议使用 NSKeyValueObservation 替代手动 add/remove;
  • - (void)setValue:forUndefinedKey: 中打日志避免崩溃,对 model 层添加 @property 完整定义,不让非法 key 存在;
5. UI 崩溃 & 防护
  • 针对于Storyboard/XIB 连接错误,每次修改 IBOutlet 后编译验证,控件删除时一并移除 IBOutlet;
  • AutoLayout 崩溃,设置约束时避免冲突(使用 >=、<= 等)
6. 文件/路径/JSON 解析
  • 针对于nil或者非法值,可以使用fileExistsAtPath
  • 如果是JSON 解析字段缺失或类型不匹配,可以使用 isKindOfClass 判断类型,还可以封装 Model 层容错代码(如缺字段时默认值)
7. 权限问题
  • 一个是添加plist权限字段
  • 还有就是在使用前,做一下权限的判断;
8. 其他高风险点
  • 可以使用断言
  • 使用@try @catch,但是我不建议使用@try @catch,这样会导致问题一直无法被暴露

👉🏻 工具

工具功能
Xcode Debugger崩溃堆栈分析、调试器跟踪
Crashlytics崩溃日志收集平台
Bugly / Sentry支持符号化和用户设备统计
Instruments内存泄漏、对象分配分析
Address Sanitizer运行时检测内存访问越界等问题

十三、关于作者(ZFJ_张福杰)

  • 官网:https://zfjsafe.com
  • 博客:https://zfj1128.blog.csdn.net
  • Github:https://github.com/zfjsyqk
  • Gitee:https://gitee.com/zfj1128
  • 打赏:https://zfjsafe.com/paycode

http://www.dtcms.com/wzjs/591401.html

相关文章:

  • 汽车网站排行榜前十名品牌买购网
  • 淄博网站建设hiddd金融app开发
  • 做个公司网站大概多少钱注册一个5000万空壳公司要多少钱
  • 建设网站网页电子商务网站建设实训作业
  • 网站权重能带来什么作用文登区城乡建设局网站
  • 网站建设资讯平台素材网站排行榜前十名
  • 什么是建设网站的主题公司网页设计论文题目大全
  • 网站检测中心辽宁省建设工程造价管理网站
  • 东莞市建设规划局网站首页一笔签名设计在线
  • 南平住房和城乡建设部网站怎样营销网站
  • 建站系统主要包括企业网站系统优惠券小程序源码
  • 郑州快速网站建设wordpress判断文章id
  • 深圳高端集团网站建设公司嘉兴网站制作设计
  • 做外贸哪个网站看外汇什么网站可以做进出口买卖
  • 做网站时的兼容问题域名永久免费注册
  • 七台河建网站推销商务网站的途径有哪些
  • 一个人做电商网站难吗网页设计基础知识总结
  • 公司网站建设成本外贸网站制作公司哪家好
  • 网站维护收费html免费网站模板下载
  • 网站建设叁金手指花总8体育用品东莞网站建设
  • 本机快速做网站详情页设计说明
  • p2p商城网站建设河南高端网站建设公司
  • 有哪些教做蛋糕的网站企业网站的主要类型有
  • 网站下载软件怎么安装自适应网站建设选哪家
  • 哪个网站做logo设计建筑网格
  • 网站备案ip地址上海社保
  • 网站制作步骤怎样通过网盘做电影网站
  • 有意思的网站网页设计与网站开发pdf
  • 威海医院网站制作购买域名做销售网站可以吗
  • 网站导航菜单代码wordpress去掉index.php