二十年目睹之怪BUG
文章平均质量分 75
介绍iOS开发中少见但排查解决很费时间的BUG,希望可能帮助更多人
奇风
Flutter、iOS开发
展开
-
WKWebView调用evaluateJavaScript异步转同步返回的潜在问题
子线程中WKWebView调用evaluateJavaScript同步返回潜在问题业务背景UIWebView执行JS是同步返回,WKWebView执行JS是异步返回。这里通过死循环阻塞线程,以达到WKWebView执行JS同步返回的效果。当调用该代码片段的业务代码是在网络请求回调或者扫描二维码回调中时,就需要从子线程切换主线程。我遇到的情况就是在扫描二维码界面,需要切换主线程。出现问题但是当外部业务代码使用dispatch_async和dispatch_get_main_queue切换主线程执行原创 2021-02-21 17:50:40 · 5077 阅读 · 0 评论 -
iOS9 WKWebView 释放时闪退
0.背景描述项目里发现,在iOS9系统上打开网页后关闭时,应用会闪退,调试得到日志:2019-12-18 18:25:37.931 xxx[18873:407888] *** -[XXWebViewController retain]: message sent to deallocated instance 0x7ffefd68a7401.问题查找依次排查了下页面中使用WKWebVie...原创 2019-12-18 18:32:40 · 1027 阅读 · 0 评论 -
iOS问题记录本:UIWebView设置allowsInlineMediaPlayback为YES后无效,运行还是全屏播放视频
0.背景描述我遇到的问题并非是如标题所述,而是反过来。如官方文档所言,在iPhone上UIWebView的allowsInlineMediaPlayback参数默认为false,运行效果是网页视频播放时会显示全屏的播放器。如果不需要全屏播放,那么请将allowsInlineMediaPlayback设为true。我需要的正是如此,网页视频需要在页面直接播放的,而实际效果正是如此。但是奇怪的是...原创 2019-04-29 18:20:08 · 9528 阅读 · 0 评论 -
iOS问题记录本:应用启动时网络请求没有cookie
0.背景描述因为NSURLSession会自动处理cookie,所以日常开发时不需要特别的处理请求中的cookie。 但是上周项目开发新功能时发现,有时发送请求时提示会话失效,而且是几率性的,非必现。项目的服务端分为登录系统和业务系统,业务系统中部分用户需要使用登录会话信息中的token,token在cookie中是有保存的,当然也可以将token放在url后面传过去。 之前因为以为N...原创 2018-07-09 20:27:49 · 1744 阅读 · 0 评论 -
Swift工程混编PgyUpdate升级SDK闪退问题
0.背景描述之前有一个小项目是用Swift开发的,因为是公司内部人员使用,所以只是使用企业证书签名,在蒲公英网站上进行发布。所以,升级功能也是直接使用的蒲公英官方的SDK——PgyUpdate。 上个月项目新增一个需求,改了埋点统计的字段,其他代码没动,但是开发完成后,新打的测试包却出现启动闪退的问题。1.问题查找1.1.定位经过初步调试排查,发现断点报错信息为: Thre...原创 2018-06-04 20:59:05 · 568 阅读 · 0 评论 -
iOS模拟器中点击UITextField不弹出软键盘问题
iOS模拟器中点击UITextField不弹出软键盘问题原创 2015-10-09 10:34:32 · 3780 阅读 · 0 评论 -
[iOS9][Xcode7]图片base64上传到服务器后,服务器上的图片损坏问题
背景:正在做一个项目,商品维护功能中需要将商品拍照,图片上传到服务器。问题描述:RT;拍照获得的图片在手机上显示正常,但服务器上的图片文件有大小,可无法打开,显示损坏。解决过程:1、一开始怀疑是框架中的拍照sdk返回的NSData有误,然后用UIImage对象自己生成NSData上传,仍然有问题;2、怀疑base64规则和服务端的不一致;图片数据base64编码是使用官方sdk原创 2015-11-06 10:31:42 · 3792 阅读 · 3 评论 -
iOS真机调试时“process launch failed: timed out waiting for app to launch”问题
背景:这几天做一个DEMO,因为需要用到定位功能,所以需要真机调试。于是就把BundleID改成以前用的,然后选上了开发证书进行真机调试。可是每次运行都无法成功,总是报错:“process launch failed: timed out waiting for app to launch”。解决:用百度搜了一下这个错误,大部分的回答都是在“Product - scheme - e原创 2016-01-21 17:22:24 · 8493 阅读 · 2 评论 -
ios图片处理相关问题
1.大图片不要使用imageNamed:方法,避免对象在内存中常住; 2.使用文件名和文件类型查询文件路径时,图片文件其实无法找到,因为一般图片为了适配会有@2x/@3x等不同规格,无法直接找到; 3.缓存文件时最好是在子线程中进行; 4.block中的使用的对象不需要__block进行修饰,否则block执行完毕后该对象会被释放;原创 2016-05-05 18:56:07 · 416 阅读 · 0 评论 -
UIButton设置图片后显示的图片不使用@3x规格
问题描述项目中APP有个大的图片按钮,开始直接用UIButton设置图片进行显示。但是使用了产品化给的切图后,发现按钮中的图片很小,在6p中的大小明显不是@3x格式的。之后尝试了各种方法设置UIButton的frame,UIButton中imageView的frame。但都没有效果。最后发现UIButton中imageView的frame大小固定为image的point大小(像素数值,不是分辨率),原创 2016-06-22 14:42:22 · 1033 阅读 · 0 评论 -
使用白色箭头图片设置UINavigationBar的leftBarButtonItem,但显示为蓝色
使用白色箭头图片设置UINavigationBar的leftBarButtonItem,但显示为蓝色原创 2016-06-22 14:44:25 · 4746 阅读 · 0 评论 -
使用LaunchScreen.storyboard后,运行时显示老的图片
设置LaunchScreen.storyboard后,运行时显示老的图片原创 2016-06-22 14:45:25 · 12880 阅读 · 0 评论 -
archive包真机运行崩溃问题一则
archive包真机运行崩溃问题一则原创 2016-06-25 14:27:43 · 1132 阅读 · 0 评论 -
[JSPatch使用]OC转JS问题列表
最近开始用JSPatch修复线上的bug,但是使用过程中(其实主要是指OC代码转换成JS代码的过程中)遇到了一些问题,特此记录下来作为自己的备忘录,同时也希望能帮助一些人。原创 2016-09-19 20:11:05 · 2018 阅读 · 0 评论 -
[CocoaPod]基于私有仓库的pod创建问题
问题列表pod spec lint命令,校验pod的代码和配置时是从git上拉取的代码进行编译;所以如果未创建git,会报以下错误:原创 2016-09-21 22:22:26 · 20067 阅读 · 0 评论 -
setObjectForKey: object cannot be nil (key: UIImagePickerControllerOriginalImage)
开闪光灯,拍照同时锁屏,问题重现。原创 2016-11-11 11:58:59 · 4581 阅读 · 0 评论 -
ViewController创建后释放闪退
问题描述在做项目时遇到一个闪退问题,查看代码逻辑发现以下代码会造成crash。- (IBAction)buttonTouchUpInside:(id)sender { TestTableViewController *vc = [[TestTableViewController alloc]init];}是的,你没有看错,上面的代码会造成闪退,TestTableViewController原创 2017-02-18 18:17:29 · 1320 阅读 · 0 评论 -
UITableView reloadData后,cellForRowAtIndex方法未调用问题
问题描述tableView刷新后,cellForRowAtIndex方法并未被调用,所以cell内容实际未刷新。问题解决搞了一个小时,终于查到一个相同的问题: tableView调用reloadData不刷新, cellForRowAtIndexPath方法不走问题原因出现这个问题的原因应该是UITableView初始化时,frame的height太小,即便之后在其他方法里改回来,也会导致这个问题原创 2017-03-21 17:03:20 · 3020 阅读 · 0 评论 -
iOS11拍照闪退,保存图片闪退问题
问题描述最近测试人员反馈,升级iOS11系统的手机使用我们app的拍照功能时闪退。 经过一番查找,发现是下面代码导致的: UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);问题解决一开始以为是该函数的调用方法出现了变化,但是在不同的地方进行调用,或者传入不同的参数,都仍然会闪退;后来使用干净的demo工程进行调试,发现闪退时会出现这样一原创 2017-10-23 21:36:54 · 9512 阅读 · 1 评论 -
Permission denied (publickey).
问题描述jifengdeMacBook-Pro:MintGridView jifeng$ git push -u origin master Permission denied (publickey). fatal: Could not read from remote repository.Please make sure you have the correct access rights原创 2017-11-13 19:04:33 · 1247 阅读 · 0 评论 -
iOS问题记录本:iOS8/Swift/WKWebView/address=0x0错误
iOS问题记录本:iOS8/Swift/WKWebView/address=0x0错误iOS问题记录本iOS8SwiftWKWebViewaddress0x0错误0背景描述1问题查找2原因分析3解决方案说明0、背景描述前一段时间,公司有个小的新项目,因为考虑到项目本身没有任何技术要求,所以决定采用Swift加上WKWebView的方案进行开发;而且前一段时间团队原创 2018-01-28 21:51:07 · 1112 阅读 · 0 评论 -
iOS问题记录本:UIWebView可以打开不受信任的https网页,但是网页中的动态资源css/image无法加载
0.背景描述项目中在之前版本已经兼容了打开https网页的功能,但之前因为网页证书受信任,所以打开没有什么问题。 最近一次迭代中,发现有个功能打开的网页,网页没有加载样式,布局全部乱掉。1.问题查找1)定位原因通过safari开发模式查看网页,发现加载样式表和图片时提示:The certificate for this server is invalid. You m...原创 2018-05-30 21:19:02 · 2837 阅读 · 0 评论 -
iOS问题记录本:UITableView点击Cell的同时刷新数据导致闪退
0.背景描述项目中有一个功能显示列表数据,列表上有搜索框用来筛选列表中的数据。 两个月前上线后发现友盟错误统计中出现少量的空数组取数闪退。1.问题查找因为闪退是在UITableView的didSelectRow代码方法中产生的,但是我的业务代码在从数据array里取数前做了边界判断:if (indexPath.row<=self.dataArray.count-1)...原创 2018-05-30 22:00:03 · 1922 阅读 · 0 评论