开发笔记(报错问题总结)

目录

1.Apple Mach-O Linker Error错误
2.因为“类型修饰错误”造成很难查找的天坑
3.注意内存缓存问题
4.问题场景:九宫格hud问题
5.因为hud的问题造成的巨坑
6.循环引用的问题这样理解
7.“OBJC_CLASS$_UToPassenger” refernced from
8.有时候程序报错,但是点击红点跳不到解释错的页面,则可以如下操作
9.打印iphone设备闪退日志
10.每次做断点调试的时候,怎么打印出当前请求的接口及参数的完整链接
11.用NSLog输出如下解析信息
12.iOS开发中遇到BAD_ACCESS怎么办
13.模拟器报错
14.高版本Xcode创建的项目,用低版本打开,报xib等错误
15.程序闪退的方法栈
16.项目运行手机报错
17.xcode will continue when iPhone is finished iPhone is busy:Processing symbol files
18.AvoidCrash防闪退处理
19.iOS开发之Xib错误排除
20.Xcode报错(自定义颜色类)
21.iOS14系统的bug,cell无法点击
22.控制台打印出请求接口的参数、url、结果
23.Xcode控制台po打印不出值
24.运行出现:[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object
25.删除列表某行数据时出现: reason: -[__NSArrayM objectAtIndexedSubscript:]: index 4 beyond bounds [0 .. 3]'
26.WKWebview的dealloc方法闪退
27.如何处理target has frameworks with conflicting names: xx.framework错误
28.po [XXDMTouchPlayManager _shortMethodDescription]
29.po与p区别
30.App闪退链接到钉钉打印出日志(未整理)
31.工程中有重复文件报错
32.iOS一些方便调试的代码方式
33.常见低级错误
34.因为定义的全局变量一样而报的错,不容易查找
35.因为定义的类名一样而报的错,不容易查找(duplicate symbols for architecture x86_64错误)
36.iOS 闪退 crash 大解析

1.Apple Mach-O Linker Error错误

2.因为“类型修饰错误”造成很难查找的天坑

比如:NSIndex不能assign来修饰,在iphone5及系统在10.0以下会有问题。注意要用strong!!!
同样问题:在消息中心封装的segementView中颜色是对象类型用strong,而不是用assign;造成了内存泄漏(不一定在什么时候就会发生,导致奔溃)!导致问题:测试环境不会有问题,不奔溃,线上环境程序奔溃。
带*号的都是对象,注意具体有些用copy...什么的

正确修饰:@property (nonatomic, strong) NSIndexPath *currIndexPath; 用assign导致奔溃如图

3.注意内存缓存问题

比如切换工程分枝的时候出现问题:分享APP时,微信朋友圈文字未显示完整,就是因为缓存问题;解决:clean一下工程即可!

4.问题场景:九宫格hud问题

九宫格:扫码拼车时,选择乘车联系人时多次后,程序奔溃!打全局断点,也不走。这时可以通过图1这个来查找之前奔溃所记录的;从中看出:Terminated due to memory issue 是内存的原因;然后一边操作一边查看内存的增长情况,测试可以看到内存一直暴涨,没有减;查看代码是因为每次更换人数的时候都要请求价格数据,而请求价格数据时肯定都要转菊花,这时内存就疯涨,而没有释放的原因就是菊花相关的hud没有设置代理,导致每次加载数据转菊花时没有释放内存!!!加上代理即可,要注意此类问题的解决办法:重点是精确定位到“问题的原因,解决过程和方法”

图1

5.因为hud的问题造成的巨坑

问题1:删除联系人页面,删掉第一个人正常,在再删除一个人之后全部联系人都删除了,跳出界面再进来发现实际没有删掉,原因是方法[weakSelf.hud hideAnimated:NO]; 没有隐藏,所以出了问题;解决方法就是hideAnimated:NO

问题2:司机端强制300问题,开始行程后杀死app,然后再进入界面此时会强跳两次界面,因为mjRefresher问题还是hud问题,以后类似的要注意

6.循环引用的问题这样理解

比如在main函数中创建了两个类的对象A和B,现在引用计数都是1。现在让A和B互相引用(A有一个属性是B对象,属性说明是retain;B有一个属性是A对象,属性说明是retain),现在两个对象的引用计数都增加了1,都变成了2。现在执行[A release]; [B release]; 此时创建对象的main函数已经释放了自己对对象的所有权,但是此时A和B的引用计数都还是1,因为他们互相引用了。这时你发现A和B将无法释放,因为要想释放A必须先释放B,在B的dealloc方法中再释放A。同理,要想释放B必须先释放A,在A的dealloc方法中再释放B。所以这两个对象将一直存在在内存中而不释放。这就是所谓的循环引用的问题。要想解决这个问题,一般的方法可以将引用的属性设置为assign,而不是retain来处理。

7.“OBJC_CLASS$_UToPassenger” refernced from

问题解决方法:http://blog.csdn.net/azhou_hui/article/details/18312047

8.有时候程序报错,但是点击红点跳不到解释错的页面,则可以如下操作

9.打印iphone设备闪退日志

Window --- Devices --- 选中iphone --- 点击View Device Logs ,可看到图二就是各种日志...

10.每次做断点调试的时候,怎么打印出当前请求的接口及参数的完整链接

11.用NSLog输出如下解析信息

出现<object returned empty description>这种原因是打断点调试的时候用的po输出的,字面意思就是返回了空的对象,如果要避免这种情况,用NSLog输出要测试的字符串就行了

12.iOS开发中遇到BAD_ACCESS怎么办

https://www.jianshu.com/p/51188549ff06

13.模拟器报错

14.高版本Xcode创建的项目,用低版本打开,报xib等错误

15.程序闪退的方法栈

如图,这些是闪退之前走过的方法;有时候闪退到了汇编代码里面就可以通过这个方法找到错误的地方

16.项目运行手机报错

项目运行一个新的手机(之前未跑过也未添加过该设备)报如下错误,可以更换Bundle Identifier尝试

17.xcode will continue when iPhone is finished iPhone is busy:Processing symbol files

真机测试的时候会报这个提示:xcode will continue when iPhone is finished iPhone is busy:Processing symbol files,原因和解决方法如下图

18.AvoidCrash防闪退处理

这个框架利用runtime技术对一些常用并且容易导致崩溃的方法进行处理,可以有效的防止崩溃;并且打印出具体是哪个方法会导致闪退,让你快速定位导致闪退的代码。
添加方法:pod 'AvoidCrash', '2.5.2'
相关github链接:https://github.com/chenfanfang/AvoidCrash

19.iOS开发之Xib错误排除

https://www.jianshu.com/p/023b6714b9c8

20.Xcode报错(自定义颜色类)

导入<UIKit/UIKit.h>

21. iOS14系统的bug,cell无法点击

因为在iOS14系统下,UITableViewCell添加控件必须添加到它的contentView,直接添加无法点击,上面会有一层遮住。xib画的不影响,xib画的控件就是添加到contentView。
https://www.jianshu.com/p/a01b7aa558e7
解决: UITableViewCell:[self addSubView:]替换成[self.contentView addSubView:];

22.控制台打印出请求接口的参数、url、结果

宏定义为:#define DLog(...) printf("%s [Line %d] %s\n\n", PRETTY_FUNCTION, LINE, [[NSString stringWithFormat:VA_ARGS] UTF8String])
实用例子:DLog(@"%@",paramsDict);、DLog(@"%@",responseObject);

23.Xcode控制台po打印不出值

打印不出的问题
解决的办法

24.运行出现:[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object

https://blog.csdn.net/xiaoning0905/article/details/89306924

25.删除列表某行数据时出现: reason: -[__NSArrayM objectAtIndexedSubscript:]: index 4 beyond bounds [0 .. 3]'

https://blog.csdn.net/yuhao309/article/details/81382655

26.WKWebview的dealloc方法闪退

奔溃信息翻译
解决办法

27.如何处理target has frameworks with conflicting names: xx.framework错误

https://www.jianshu.com/p/a142d6bee8bf

28.po [XXDMTouchPlayManager _shortMethodDescription]

po [XXDMTouchPlayManager _shortMethodDescription],这个方法可以打印一些第三库的具体没有暴露的实现方法,比如打印高德地图某个类里面的具体m文件的所有方法,可以找到获取实时当前位置距离终点的剩余距离和时间的信息。这个po方法是属于runtime方法。XXDMTouchPlayManager这个替换成自己想要看的那个类。

29.po与p区别

p 是 expression — 的别名,p 为 print 的简写,同时可以写为 pri 打印某个东西,可以i是变量和表达式; call 为调用某个方法,输出变量也是可以的。po 一般用于打印对象,是 expression -O — 的别名。p 和 po 的区别在于使用 po 只会输出对应的值,而 p 则会返回值的类型以及命令结果的引用名。
相关链接:https://juejin.cn/post/6869621360415637518

例子:AFN请求数据success后的回调,response里面是一个数组dateArray,数组里面存的是字典。想要拿到返回的id,直接 dict[@"id"] 在控制台用po打印得到87,确实是一个正常的数字,感觉没问题。用p命令打印后是 -5432343234 明显不正确,因为dict[@"id"] 得到的是一个对象而不是NSIntger类型的,需要 [dict[@"id"] integerValue] 之后才是基本的数据类型。

AFN请求数据, success后的回调,response, 里面是一个数组dateArray, 数组里面存的是字典
返回的数据结构

30.App闪退链接到钉钉打印出日志(未整理)

闪退日志钉钉.png

31.工程中有重复文件报错

重复文件
重复文件

32.iOS一些方便调试的代码方式

1.判断里面加个NO让他不走这,不用去注释代码

if判断里面加个NO让他不走这,不用去注释代码

2.h、m和xib等文件是否加入编译

正常情况下默认都加入编译

不加入编译不报错

3.暴力调试:用 NSLog 输出方式

用 NSLog 输出方式,Xcode 调速器断点,调试区的按钮如下:从左往右数功能分别为:

第一个:打开/关闭调试器窗口
第二个:蓝色表示打的断点有效;灰色表示断点无效
第三个:继续按钮;点击之后程序会继续执行,直到遇到下一个断点结束或者闪退
第四个:跳过按钮;点击他会执行一行代码,然后程序的控制权又交还给你(相当于点一下执行一行)
第五个:跳入按钮;如果程序里有当前光标所在函数或者方法的源代码,那么xcode将会跳入那个方法,显示代码
第六个:跳出按钮;单击它会终止当前运行的函数,并且程序会停在调用函数那行的下一行代码,控制权又回到你手中

33.常见低级错误

1.数组初始化 array 写成 alloc
2.没有创建对象就对对象做事,比如绑定协议绑在创建表格视图之前
3.驼峰标识法使用,大小写不区分
4.处理地图里用可视化放了一个分段按钮,再添加一个事件,但其无法显示在视图上,被地图遮住;解决办法:给分段控件绑定一个插座变量(如_segementController),再强制放到视图上(方法如下[self.view bringSubviewToFront:_segementController]; )类似问题同法处理。

34.因为定义的全局变量一样而报的错,不容易查找

35.因为定义的类名一样而报的错,不容易查找(duplicate symbols for architecture x86_64错误)

因为全局中定义使用了一样的类名而报错重复,全局搜索重新修改定义即可成功。

https://blog.csdn.net/weixin_30819085/article/details/97124988

类名重叠报错,不好定位到
类当中类名字相同重叠报错

36.iOS 闪退 crash 大解析

https://www.jianshu.com/p/1b804426d212

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容