首页
学习
活动
专区
工具
TVP
发布

iOS技术

专栏作者
37
文章
46794
阅读量
37
订阅数
记 libAccessibility 通知 Crash 排查
这里取出对象 isa 中的 class 对象 PAC 验签后使用,在 _objc_msgSend + 32 寻址时 Crash,是典型的对象内存管理异常问题。
波儿菜
2022-12-10
4760
记 os_object_release Crash 排查
线上存在一个持续很久的 Crash,由于没有明确业务栈且量级不算大,让它成为了老赖之一,Crash 栈是这样的:
波儿菜
2022-12-10
4960
iOS 网速检测方案
为了基于网络状况做更细致的业务策略,需要一套网速检测方案,尽量低成本的评估当前网络状况,所以我们希望检测数据来自于过往的网络请求,而不是专门耗费资源去网络请求来准确评估。
波儿菜
2022-12-02
1.2K0
NSURLSession 跨域重定向透传 HTTP Header 问题
在源网页通过服务器重定向打开某个三方网页,网络层出现了 -1005 (NSURLErrorNetworkConnectionLost) 错误码,排查差异后发现是由于给这个三方服务带了源网页特有的 HTTP Header,导致服务器检查异常从而断开连接。
波儿菜
2022-12-02
9610
如何感知 WebKit 页面切换
通常在 WKWebView 打开一个页面,收到页面数据时,代理方法可感知这个时机:
波儿菜
2021-11-24
1.5K0
WebKit 历史栈缓存策略探索
在一个新的业务方案实施过程中,发现数据上存在较大的差异,而这个差异是 WKWebView 的应用方式不同带来的。通过手工测试和上层代码能模糊的解释一些现象,但想要铁板钉钉的证明这些现象就得从 WebKit 源码去分析,便于将来准确的决策这些场景是对齐还是变更策略,或许还能从技术角度发现一些优化点从而反哺业务。
波儿菜
2021-07-20
7200
MessageMock : 优雅的模拟 Objective-C 方法
我们在调试代码或编写单元测试时,为了触发特定场景,往往需要通过一系列前置操作,或者直接修改源代码数据。实际上更期望有一种不需侵入源码且更快捷的方式,知名的 OCMock 正是为了解决这些问题,不过它有不支持多线程、接口怪异、重复调用、类型处理复杂等问题,笔者看了源码过后决定换一种思路,基于objc_msgSend来进行方法的“模拟”和“校验”。
波儿菜
2020-08-04
7850
OCMock 源码分析
单元测试作为日常工作中不可或缺的部分,虽然增加了需求开发的工作量,但能在一定程度上提高代码的稳定性。特别是迭代时通常能更快更准确的验证以往的算法或边界是否异常,避免手工测试时漏掉历史逻辑细节。
波儿菜
2020-08-04
6850
iOS 底层拾遗:autorelease 优化
由于 ARC 下 retain/release/autorelease 的调用都是编译器代劳,所以需要使用编译后的代码进行分析,通常笔者选择 Xcode 自带的工具,它有一个优势是自动将一些符号地址改为符号名,并且可以选择 Running 或 Archiving 下的汇编代码,后者生成的代码往往是前者的优化版本。
波儿菜
2019-12-23
1.3K0
一文领略链接与装载
链接与装载是一个比较晦涩的话题,大家往往容易陷入复杂的细节中而难以看清问题的本来面目。从本质上讲各个系统的编译、链接、装载过程都是大同小异的,或许可以用一种更抽象的形式来理解这些过程,梳理清楚宏观的来龙去脉有利于对特定系统进行深入学习。
波儿菜
2019-12-13
8670
弱符号实现 iOS 组件化解耦
今天在重温《程序员的自我修养》中关于符号表的章节时,突然脑子灵光一现,想到了这个知识的一个应用场景,所以便有了这篇文章。
波儿菜
2019-11-19
1K0
iOS 底层拾遗:objc_msgSend 与方法缓存
Runtime 消息发送与转发流程总是大家关注的重点,却常常忽略方法缓存机制这个显著提升 objc_msgSend 性能的幕后功臣。
波儿菜
2019-10-28
1K0
iOS 底层拾遗:AutoreleasePool
在阳神的 黑幕背后的Autorelease 文章中已经把 AutoreleasePool 核心逻辑讲明白了,不过多是结论性的东西,笔者通读源码以探究更多的细节,验证一下老生常谈的一些结论。
波儿菜
2019-10-14
9990
iOS 列表界面如何优雅实现模块化与动态化
去年做了一个小组件,前些时间考虑到项目中可能会大规模实施,完善简化后新开了一个 repo: YBHandyList 。
波儿菜
2019-08-20
1.4K1
YBImageBrowser 重构心得:如何优化架构、性能、内存?
界面展示类型的轮子往往定制性需求比较多,常常让人抓耳挠腮。这种接近业务的轮子如何设计才能兼顾便捷性和拓展性?如何有效的优化性能?如何控制内存不至于 OOM ?本文以 YBImageBrowser 的重构为切入点,尽量抽象提炼,谈谈笔者对以上问题的思考。
波儿菜
2019-07-18
1.3K0
解读 iOS 组件化与路由的本质
虽然 iOS 组件化与路由的话题在业界谈了很久,但是貌似很多人都对其有所误解,甚至没搞明白“组件”、“模块”、“路由”、“解耦”的含义。
波儿菜
2019-05-31
1.2K0
谈谈 iOS 网络层设计
基于 AFNetworking 的二次封装网上蛮多的,比较好一点的就是 CTNetworking 和 YTKNetwork,但是看了一下源码过后发现都有一些不足的地方,或者说不太能满足我们的业务需求。考虑到 AFNetworking 本身就为网络层做了很多事情,二次封装并非是个复杂的事情,所以索性自己写了个便于拓展和维护 (代码完全脱敏):
波儿菜
2019-04-18
9670
iOS 效率工具:自动生成 Model 文件
当一个网络数据比较复杂时,往往需要一些功夫来创建对应的数据模型,笔者正是苦于手动创建 Model 痛苦,决定做一个工具来自动创建 Model 文件。
波儿菜
2019-04-09
1.5K0
YYText 源码剖析:CoreText 与异步绘制
YYText 是业界知名富文本框架,基于 CoreText 做了大量基础设施并且实现了两个上层视图组件:YYLabel 和 YYTextView。同其它 YYKit 组件一样,YYText 在性能方面表现优异,且功能出奇的强大,可以说是业界巅峰之作。
波儿菜
2019-03-15
3.6K0
iOS 任务调度器:为 CPU 和内存减负
前些时间有好几个技术朋友问过笔者类似的问题:主线程需要执行大量的任务导致卡顿如何处理?异步任务量级过大导致 CPU 和内存压力过高如何优化?
波儿菜
2019-02-15
1.4K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档