- 博客(40)
- 资源 (1)
- 收藏
- 关注

原创 WWDC2019 ------iOS13适配(持续更新)
第一、Web Content适配https://developer.apple.com/videos/play/wwdc2019/511/https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme问题展示先看两张图:如上图所示,如果h5未适配dark模式,则在dark模式下原来的页...
2019-06-15 23:08:26
9359
1

原创 WWDC2019 ------深入理解App启动
苹果在WWDC2019专题单元讨论了APP启动-----Optimizing App Launchhttps://developer.apple.com/videos/play/wwdc2019/423/本次讨论有几大亮点:dyld3终于来了; Instruments 新增 AppLaunch 功能,可精准测量APP启动的各个环节的耗时; XCTest新增了app启动测量的AP...
2019-06-12 11:54:09
1931

原创 深入理解WKWebView白屏
白屏是webview进程终止之后的表现,在webview因异常使用内存、CPU等资源时,webkit会终止当前m页展示的进程,在用户端表现为白页。第一、webview的进程被终止的原因有哪些?ProcessTerminationReason { ExceededMemoryLimit,//超出内存限制 ExceededCPULimit,//超出CPU限制 R...
2019-05-16 18:55:03
8453
2

原创 iOS12 bug总结(持续更新)
iOS12fix掉的问题:第一、iOS11.3 WKWebView的多选图片功能出现了bug。我们apple的架构设计如下:rootViewController为UITabBarController,然后add了五个NavigationController,这里的bug主要的表现是:当用户在wkwebview中唤起相册后选取多张相片,相册的右上角一直都是取消按钮,没有完成按钮,导致无法选取...
2018-09-19 21:53:29
10343

原创 iOS11.3 WKWebView清除cookie所踩的坑!
我们在iOS11.3上踩了一个大坑!这个坑表现在线上的版本只要用户升级到iOS11.3且退出登录,或者登录态过期,都会闪退。因为iOS11.3支持了两个超级一线城市的公交卡,引发了用户短时间集中更新。为了解决这个问题,整个团队发一个小版本来降级这个问题的影响。问题的表现:前面说过,只要退出登录,App就会闪退。这是因为我们在退出登录时清除WKWebView的cookie时引发了崩溃。问题的原因:苹...
2018-04-02 00:22:22
13464
1
转载 iOS 16.1(20B5045d)导航栏崩溃问题解决实录
iOS 16.1(20B5050f)系统,针对导航栏在默认系统titleView的场景,新增的TitleControl不会及时去更新布局约束,导致其layout约束成员变量释放后才更新布局,等下次更新这个约束对象成了unsafe_unretained 对象,造成了Crash。对应的解决方案为:在每次更新导航栏状态前,先主动调用一下更新布局方法,防止更新不及时触发系统Crash。 经验证,Apple刚刚发布的iOS 16.1第二个版本(20B5050f),修复了此问题。
2022-09-28 19:38:55
1113
原创 Xcode13运行iPhone14模拟器暨低版本Xcode运行高版本模拟器
iPhone14上市前,Xcode14还未发布正式版,所以临近的发版打包肯定还得基于Xcode13,所以,iPhone14的第一轮适配需要基于Xcode13,我们需要在xcode13下运行iPhone14 模拟器。
2022-09-13 22:04:34
6074
原创 objc_msgSend 调用时报错Implicitly declaring library function ‘objc_msgSend‘ with type ‘id (id, SEL, ...)‘
objc_msgSend 直接调用
2022-09-01 21:46:56
703
原创 WireShark 初试牛刀 -- dns解析问题
这个时间,我们后台的同事看到我又开始查这个问题了,大兄弟直接挺身而出,去找客户端的同学看现场了,在运维同事还没有反馈看包结果时,他就跑回来说问题解决了,是客户端自己配置了dns服务器(8.8.8.8)导致的, 恢复默认dns或者配hosts都可以解决问题,就让客户端恢复默认dns配置了。就先积跬步,然后行千里吧。好遗憾,第一次wireshark解决问题就这么胎死腹中了,那就来弥补一下吧,既然不能正向发现问题,那看看能不能倒推出问题,已经知道是dns配置的问题了,wireshark直接用dns来过滤。...
2022-08-08 22:27:22
1081
原创 iOS15 WebKit::WebPageProxy::handlePreventableTouchEvent crash
苹果爸爸真不省心,每次发版都会带来一些“惊喜”,这不,这次iOS15的体验版本又送大礼来了。一个和点击事件相关的崩溃。相关堆栈如下:
2021-06-11 18:53:14
1403
原创 Xcode12.5 iPhone 模拟器无法直接安装Charles证书
升级到Xcode12.5之后发现Charles以前设置证书的方式不管用了(Help-->SSL Proxying--->intall Charles Root Certificate in iOS simulators)查询后可以通过这里所述的方式解决(来源:https://proxyman.io/blog/2021/04/Install-Certificate-For-iOS-Simulator-On-Xcode-12.5.html),需要自取...
2021-05-14 11:26:40
2026
1
转载 京东商城iOS客户端安装包瘦身实践
一.概述随着业务的快速增加,商城app的大小也在迅速增加,一度超过了300M。安装包大小的不断增加对app下载成本,推广效率产生了比较大的影响。从2018年9月份我们对商城app开始了为期二期的专项瘦身工作:一期从V7.2.0-V7.5.2版本,共计瘦身46M(设备:iPhone X,iOS12、13)。为了进一步减小包大小,同时为了建立长效机制,从今年5月份开始了第二期的专项优化工作,二期优...
2019-12-02 22:28:44
1470
原创 iOS13系统升级 ------ windows下如何更新iOS的beta版本?
苹果发布了iOS13的第一个beta版本,但未提供描述文件,官方提供的升级方式可以说是变态到了极点:第一、你需要一台Mac; 第二、Mac需要升级到Mac 10.15版本; 第三、你需要有一个开发者账号;抛开以上硬件的要求,安装的整个流程也是烦的要死。今天,我们安利一种直接在windows下就可以随时升级iOS系统的方式,让那些繁琐的要求和流程去见鬼吧。windows下,你需要安装两...
2019-06-18 14:22:19
3024
原创 可怕的KCFErrordomainCFNetWork 303
任何恐惧都来源于不了解。最近发现了一个问题,有用户反馈,整个APP里面所有的h5页面全部打不开,这个结果无疑是恐怖的,因为我们的APP,从产品详情到收银台,从促销页面到会员服务都是h5,全站打不开的结果当然是恐怖的。通过查看用户日志,发现webview报了一个很固定的错误:NSCocoaErrorDomain-Error Domain=kCFErrorDomainCFNetwork...
2019-05-31 23:33:55
16319
1
原创 WebKit 20问
webkit是时下最流行的浏览器内核,作为Safari和iOS的wkwebview的内核,分析其源码,可以很好的了解浏览器的机制,并为h5的开发提供一些建设性的建议。本系列文章将深入分析webkit的一些常见的机制,以期抛砖引玉。第一、WKWebView白屏为何物?...
2019-05-16 18:54:06
289
原创 iOS基础---OC RunLoop篇
RunLoop注意点:第一、线程安全问题:OSX/iOS 系统中,提供了两个这样的对象:NSRunLoop 和 CFRunLoopRef。CFRunLoopRef 是在 CoreFoundation 框架内的,它提供了纯 C 函数的 API,所有这些 API 都是线程安全的。NSRunLoop 是基于 CFRunLoopRef 的封装,提供了面向对象的 API,但是这些 API 不是线...
2019-05-16 17:44:41
251
原创 iOS基础---OC runtime篇二之对象dealloc后发生了什么?
对象的dealloc调用后发生了什么?本文对应的源码见:https://github.com/huangturen/objc-runtime第一、最简单的类(没有任何成员变量,没有任何引用的类)其dealloc的过程为何?我们创建一个类TestObject1,使其继承自NSObject,在main函数中创建一个TestObject1的临时变量,观察其dealloc过程:stati...
2019-05-11 00:22:29
1102
原创 iOS基础---OC runtime篇零之优秀文章集锦
第零篇---------巨人的肩膀本篇我们收集优秀的关于runtime相关的文章,持续更新:一、你不知道的TaggedPointer:https://www.jianshu.com/p/eee8cd705f0a文章清晰的描述了TaggedPointer的机制,对初次阅读runtime源码有很好的帮助二、什么是Non-pointer isa:http://www.seal...
2019-05-10 23:50:25
198
原创 iOS基础---Block朝花夕拾
Block是总最常用的iOS特性之一,常见的问题相信大家都知道,这里我们列一些不太常见的情形。第一、block无法捕获C语言数组,如果想捕获C语言的数组,需要使用指针;如: const char text[] = "hello"; void(^test)(void) = ^(void){ printf("%c",text[2]); };...
2019-04-28 22:52:49
398
原创 iOS基础---OC runtime篇一之基本概念
OC的runtime是基于C语言实现的objective-C 的动态运行时机制,是iOS开发者最基础的知识,虽然互联网上相关的介绍多如牛毛,但是这种最基础的机制,每个开发者都需要有自己的理解与整理。基本概念第一、struct和union由于runtime是基于C实现的,里面有大量的C预研数据结构,如果对C语言不太熟悉,理解起来未免费劲。所以,这里首先需要搞清楚这两个概念:struc...
2019-04-20 17:40:40
428
原创 [NSDate distantPast]与[NSDate distantFuture]分别是什么意思?
今天被问到了这个问题,虽然对问题进行了答复,但是事后感觉还是没有描述清楚该问题,这里整理一下这个小问题:[NSDate distantPast]:表示过去的某个不可达到的事件点[NSDate distantFuture]:表示未来的某个不可达到的事件点以上是回答的原话,但更直接的描述我觉得应该是:将时间与整数类比,则:[NSDate distantPast]等同与负无穷大;...
2019-02-01 18:24:34
6960
原创 Unknown type name 'CVMetalTextureCacheRef on iOS Simulator
今天在撸一个项目的时候,突然发现了如题的问题,问题很小,但是很多时候大家第一时间都反应不过来,特此mark一下这个问题。 CVMetalTextureCacheRef是CoreVideo Framework中的指针,从命名看,此指针和Metal相关联,Metal是Apple深度定制的GPU框架,只支持真机。但大多数时候,在模拟器上metal的api是可以编译通过的,只是运行时无法生效而已。...
2019-01-31 18:56:22
879
原创 CoreML之VNImageCropAndScaleOption
苹果对CoreML框架封装的Vision,极大程度的简化了输入,特别是图片的输入,Vision可以接受任何大小的图片,然后自动将其自动截取到模型要求的大小,这就是VNImageCropAndScaleOption的功能。今天我们来聊一聊VNImageCropAndScaleOption,其对预测结果的输出有至关重要的影响,主要是因为图片截取方式决定了后续预测数据的坐标转化(如人脸检测的人脸位置...
2019-01-23 21:47:12
613
原创 如何实现webview内页面放大和缩小(捏合手势)
前面曾看到一篇文章在讨论京东的图文详情页内如何实现捏合放大和缩小功能,作者在原生层面通过各种注入实现了这一功能。其实这是画蛇添足的做法,这一功能的实现完全没有必要在原生层面进行,只需要h5略作设置即可,具体如下:h5在head中设置viewport时添加user-scalable=0,即可禁止这一功能;反之,如果没有这个设置,webview默认就有捏合的能力。这是禁止捏合的栗子:&l...
2019-01-14 15:32:31
6803
原创 WKWebView 如何支持window.open方法
window.open是js新开页面的一种方法,本质上是为了在PC上支持直接新开页面,但是移动端也是支持该方法的,只是处理方式上并没有让它扮演新开窗口的任务,通过window.open打开的页面链接其实还是在当前webview内进行加载。iOS平台UIWebView默认支持了这一js命令,但是WKWebView默认是不支持的。第一、UIWebView下window.open的表现如前所述,...
2018-12-01 19:09:49
6602
转载 KVC 和 KVO
原文:https://www.objc.io/issues/7-foundation/key-value-coding-and-observing/中文译文:https://objccn.io/issue-7-3/本文是截止目前我看到的最好的KVO,KVC的文章,特此mark一下Key-value coding (KVC) 和 key-value observing (KVO) 是两种...
2018-11-24 21:35:43
414
原创 人工智能----机器学习基础
第一、弱监督学习监督学习、非监督学习、半监督学习这些概念都比较好理解且常见。何为弱监督学习?看起来就是指样本有标记,可能不止一个,还可能不正确,其训练的目的是为了将结果往好的标记上靠。感觉是非监督学习的样本上加了一些有意义的杂质。 第二、模型质量评价这里需要记住以下几点:1、正确率不是衡量模型好坏的唯一标准;反例如下:正确率确实是一个很直观很好的评价指标,但是有时候...
2018-11-20 22:19:04
387
转载 (转)深入理解 CocoaPods
原文地址:https://objccn.io/issue-6-4/ CocoaPods 是开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具。利用 CocoaPods,可以定义自己的依赖关系 (称作 pods),并且随着时间的变化,以及在整个开发环境中对第三方库的版本管理非常方便。CocoaPods 背后的理念主要体现在两个方面。首先,在工程中引入第三方代码会涉及到许多内...
2018-11-11 20:09:39
203
原创 人工智能之一----数学基础
一、前言应原作者要求,后续文章中将不会出现深度学习500问相关的东西!!!如有,也会通过引用注明出处! 二、张量的概念对深度学习有了解的同学一定知道TensorFlow,对TensorFlow想有一个比较深入的理解,第一个碰到的概念就是Tensor,即张量。老实说,深度学习500问第一节在我看来并没有讲清楚张量的概念,至少我看完后还是不理解张量为何物?具体大家可以阅读:http...
2018-11-07 23:49:07
1181
转载 漫谈iOS Crash收集框架
转:https://nianxi.net/ios/ios-crash-reporter.html本文描述了crash收集的原理,作者的行文清晰,理解透彻,文章易读易懂,特此转发 为了能够第一时间发现程序问题,应用程序需要实现自己的崩溃日志收集服务,成熟的开源项目很多,如 KSCrash,plcrashreporter,CrashKit 等。追求方便省心,对于保密性要求不高的程序来说,也...
2018-11-06 22:22:44
376
原创 WKWebview 的SSL异常
webview的SSL异常是webview加载失败的重要原因之一,因此有必要对此进行较为全面的监控。我们的业务中关于webview的SSL异常监控起初是这样做的:监控的位置:时机一:数据加载过程中出错- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(null_unspecified WKNavigat...
2018-10-27 20:05:06
3272
转载 Mac下7z格式文件解压
(转)https://blog.youkuaiyun.com/book_1992/article/details/55258937第一、通过brew安装p7zipbrew install p7zip安装成功后执行7z e filename.7z亲测有效
2018-09-23 21:36:34
10511
原创 Xcode10打包存在iOS9.3以下系统crash(最新:Xcode10.1已解决crash问题) 暨iPhoneXS,iPhoneXS Max,iPhoneXR适配小结
不废话,直接出结论。Attention:Xcode10发布后,很多大厂采用xcode10适配iPhone新机,且提审时采用了Xcode打包,此包提审后通过appstore下载的安装包在iOS9.3以下的系统(>=iOS9.0)存在随机崩溃!国内阿里,京东等厂均已复现了该问题。https://stackoverflow.com/questions/52364231/our-app-...
2018-09-17 21:15:11
6826
1
原创 再探URL拼接的坑(续:NSURLComponents默认会对url做一次decode)
对于任意一个IT从业者来说,网络是最熟悉、最基本的技术点之一。但是往往最基本的技术也是最容易入坑的技术。我们在最新版的应用中就在URL的拼接上犯了一个幼稚的错误。需求:针对所有的url,拼接一个全局的参数。例如,原URL为https://www.baidu.com, 则需要在上述url后面加一个固定的参数a=b。开始拿到这个需求,感觉并没有什么困难,常见的url不就如下几种样式么:https://...
2018-06-01 00:01:12
6421
3
原创 WKWebView iOS10页面截断暨iOS8、9不渲染
最近有业务使用WKWebView时碰到了两个小问题:使用场景为:WebView load web,然后根据web的高度来调整WebView的高度。碰到的问题:1、iOS10上web加载出了页面被截断,即只有部分网页内容展示出来,其他的部分没有办法展示。经查询是iOS10上引入了bug(iOS9 和 iOS11是没有问题的)https://stackoverflow.com/questions/39...
2018-04-17 23:32:23
1632
原创 iOS try-catch会引起memory leak
最近碰到了一个很棘手的问题----内存泄露。话说某天早晨,在需求完成时检查各种场景下WebView的使用是否正常,特别是内存释放是否正常时,发现了一个问题,在某个内嵌WebView的场景下WebView实例始终不释放。着实吓了我一跳,然后检查了一下前几个版本的代码,发现这种场景下一直都没有释放,可见问题久亦。在评估了对线上版本的影响后,我就开始了漫长的内存泄露定位之旅。1、检查了持有WebView...
2018-04-07 22:24:03
1529
原创 WKWebView js通信的内存泄露问题
苹果在WKWebView上做的最赞的事儿就是显式的支持了js通信。用法很简单:一个协议:WKScriptMessageHandler 一个类:WKUserContentController创建一个实例A,该实例遵循WKScriptMessageHandler协议,并将实例A与WKWebView绑定(有一个共同的对象持有他们俩即可),这样,实例A便可以获得与WKWebView对应的WKUse...
2018-04-02 23:27:36
967
原创 reason: image not found如何解决
今天想用Facebook的FBRetainCycleDetector定位一个内存不释放的问题。但是出师不利。App link、luanch都没有问题,但就是载入镜像阶段直接挂掉。问题是:FBRetainCycleDetector的framework载入时报错:image not found。查看了一下build phases,link binary with library 中没有添加framew...
2018-04-01 22:56:50
6991
转载 iOS tableView优化点
原文:http://mp.weixin.qq.com/s/QIjamR1oZ8phSDZtOhIyVw本文总结了一些tableView常见的优化点,这里聊作记录,以便后用。1、cell高度缓存,减少高度的计算次数;2、图片异步加载渲染;3、减少View层级以及多次绘制(可以将多个变化较小的View压缩成一张图片统一绘制)4、圆角处理。直接操作View的layer设置圆角相对耗费性能,可以以原图片代...
2018-03-26 21:49:16
193
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人