老司机技术

其他

一个 WebKit Bug 导致小程序页面跳转失败的问题的排查经历

https://opendocs.alipay.com/mini/api/fh18ky[2]https://bugs.webkit.org/show_bug.cgi?id=246787:
2022年11月23日
其他

探秘越来越复杂的 ImageIO 框架

时,会调用一个新增的奇怪的接口CGImageGetImageSource。如果带着疑问进一步追踪调用堆栈,发现在调用CGImageSourceCreateImageAtIndex时,ImageIO
2022年11月9日
其他

原创计划开启,欢迎分享你的技术

~关于「投稿」说明我们会对「投稿」的内容进行一次专业性审核,一旦确认是干货文章,我们会安排最近的一次发布周期进行发表。你可能会获得以下几个好处:文章更高的曝光量,每篇文章至少
2022年11月8日
其他

利用 Xcode 和设备上的检测工具排查卡顿

密集型工作迁移到子线程队列处理,降低主线程繁忙的概率;避免主线程等待子线程的场景,尽量使用异步子线程处理任务,完成后通知回调到主线程的方式;特别需要注意的是在主线程上访问一些原子变量或使用锁(例如
2022年10月28日
其他

App Store Connect 中的新特性及最佳实践

都可以实现这个功能,这无疑提供了我们一个利器来判断用户当前所处的购买状态,以此针对性地展示个性化页面,为用户提供最新的产品。不仅如此,我们还可以提供适当的优惠策略吸引老用户来恢复购买,因此来实现
2022年7月27日
其他

What's new in Xcode

的查看,我们可以很直观的了解到整个构建流程各个任务的耗时大小、串行阻塞、并行数量等信息,有了这些信息,我们就可以做些点对点的优化,这将大大降低我们的优化成本我们可以进入到编译日志页面,选中右上角
2022年7月8日
其他

Swift 首次调试断点慢的问题解法 | 优酷 Swift 实践

进行了扫描。但仅仅依赖表象分析还不够,所以后续的工作我们从两个方向着手,第一是从播放主业务模块的解耦测试,快速解耦播放主业务模块的外部依赖,测试耦合数量的减少对断点时间是否能有帮助;第二是从
2022年5月6日
其他

理解和消除 App 中的卡死

返回结果。如果这类方法内部进行了大量的工作,或者有可能延时返回,那么它们就不应该在主线程上被使用,因为它们可能导致延迟,以及会增加失败的几率。一个典型的案例是在主线程进行同步的网络请求。对于那些使用
2022年4月26日
其他

Swift 中的 ARC 机制: 从基础到进阶

等语言特性,如果你的程序依赖于对象观察到的确切生命周期而不是编译器保证的最小生命周期,那么你很可能在未来会遇到一系列的问题。这类代码在当下能正常运行只是一个偶然,对象观察到的生命周期会随着未来
2022年3月23日
其他

为你的 App 减少网络延迟

open,那么所发出的请求必须是「幂等」的。所谓幂等是指同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。换句话说就是,幂等方法不应该具有副作用(统计用途除外)。例如,用
2022年3月16日
其他

字节跳动技术 iOS 技术沙龙正式报名开启

case?这些问题都会以抖音为例,在这次分享中解答。观众收益了解流畅度相关的指标,以及指标劣化的排查思路初级工程师-了解和使用各个工具,知道常见的劣化问题与修复方法,快速定位问题中级工程师-
2022年1月12日
其他

检测和诊断 App 内存问题

写性能测试来检测内存问题(泄露和碎片化),这是一种可重用的,更加系统性的检测内存性能的方式,因为是通过命令行工具对文件进行分析,你可以通过脚本快速检测泄露和堆的问题,简化一些无用信息的输出。但是每个
2021年12月29日
其他

iOS 符号化:基础与进阶

tool中,提供了强大的诊断和检视符号化过程与细节信息的能力;必要时,大家可以将这些工具集成进自己的工作流;如果你有兴趣学习更多链接与符号化知识,我在此推荐两个WWDC18的Session
2021年9月9日
自由知乎 自由微博
其他

基于 Bazel的 iOS MonoRepo 实践

原料:代码文件(m/cpp/swift/c/h)、签名、资源文件(xcasset/png/json/html/...)、二进制文件(.a/.framework)
2021年8月12日
其他

淘宝工程渐进式拥抱 Swift

声明式处理,这种处理在某些情况下是比较脆弱的,比如头文件的引入顺序可能会导致编译产物发生一些变化;一些内联定位会冲突;头文件中定义的宏可能存在重复定义或者取消定义等。另外,头文件的引入是低效的,因为
2021年7月29日
其他

一文了解 Xcode 生成「静态库」和「动态库」 的流程

973.4/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool
2021年1月7日
其他

更现代的 Swift API 设计

https://github.com/apple/swift-evolution/blob/master/proposals/0258-property-delegates.md
2021年1月5日
其他

iOS 性能监控:Runloop 卡顿监控的坑

位置发生卡顿时,新方案因为执行顺序比较晚,卡顿监控代码仍然认为当前处于休眠状态,导致无法进行卡顿监控。image-17000304903针对上面的情况,我们可以使用的双
2020年12月17日
其他

iOS 性能优化:优化 App 的持久化策略

这三个常见的格式,这些都是常见的数据格式,便于使用而且普适性高,也易于解析,适合不是频繁读写的数据,但是每次改动都是全量的读写,导致整个文件读取和重新写入,就会引起上面所说的从
2020年11月19日
其他

使你的 Metal 应用程序更好地运行在 Apple Silicon 架构上

贴图内存到系统内存,如果在片元着色器中对深度贴图进行采样,就会引发并行读写问题。如果应用程序中确实有对这类附件的采样需求,请考虑创建一份拷贝专供采样。渲染一致性在
2020年11月12日
其他

基于 Metal 的现代渲染技术

https://developer.apple.com/documentation/metal/deferred_lighting?language=objc[3]这里:
2020年11月10日
其他

iOS 性能优化:用 Xcode Organizer 诊断性能问题

指的就是滑动界面时,已渲染的图像帧没有在预期的时间点从当前屏幕上移除。它通常会导致下一帧图像延迟出现或者被丢弃从而表现出卡顿和抖动。>Hitch
2020年10月22日
其他

iOS 稳定性:App 被终止的原因

"Exited")UIApplication.shared.endBackgroundTask(backgroundTaskIdentifier)可以得到如下结果:上面的结果图显示,缺少一次
2020年10月21日
其他

iOS 性能优化:用电池和性能 API 识别性能趋势

Data)智能分析的结果建议,这些智能的结果建议,会使用历史版本的指标数据进行智能化分析,自动标记需要关注的重点,此项功能在回归测试中将起到很好的参考作用请求结果MetricDataSmart
2020年10月20日
其他

iOS 性能优化:使用 MetricKit 2.0 收集数据

给到我们。这样我们就拥有了同一个时间段的性能数据和诊断数据。由于他们是一一对应的,所以我们在对性能数据产生疑问的时候就可以掏出对应的诊断数据来进行排查。由于有了这些一一的对应关系,所以
2020年10月16日
其他

iOS 持续集成:更完备的 App Store Connect API

/v1/builds?filter[app]=appid&filter[perReleaseVersion.version]=1.1&fileter[version]=3此时返回结果
2020年10月15日
其他

初探 Objective-C/C++ 异常处理实现机制

前言异常处理是许多高级语言都具有的特性,它可以直接中断当前函数并将控制权转交给能够处理异常的函数。不同语言在异常处理的实现上各不相同,本文主要来分析一下
2020年10月14日
其他

iOS 性能优化:优化 App 启动速度

的启动速度。运行后可以看到各个阶段的具体时间,根据数据进行优化,还能看到耗时的函数调用。系统优化去年苹果做了很多优化,下面这几个高亮的是和启动速度有关的优化但是不知道是不是时间原因,在
2020年10月13日
其他

不同角度看问题 - 从 Codable 到 Swift 元编程

源码生成工具,也就是说,除了变量声明和结构体,其他上至类、枚举、方法,下到访问控制关键字、冒号、逗号,都有对应的类型安全的方式进行操作。除了通过代码生成代码以外,SwiftSyntax
2020年10月10日
其他

Universal Links 新变化:让触达更广更快

开发者。目前就职于字节跳动。Session:https://developer.apple.com/videos/play/wwdc2020/10098/引言通过本文你将会了解到
2020年10月9日
其他

iOS 崩溃排查技巧:如何获取系统库源码

崩溃日志获取对应系统库源码」,正好我之前也遇到过类似的问题,所以和大家分享一下我的一些办法。基础术语对齐按照惯例,为了方便提高效率,避免歧义,第一部分是基础术语对齐。如下,我们从官方文档
2020年9月29日
其他

一个 Swift Crash 引发的讨论...

发现了原因。因为在讨论过程中发现了几个有意思的东西,所以想写一篇简短的笔记,来大家分享一下。问题描述我先简单描述一下问题,问题发生于下面这种写法,在运行时会直接
2020年9月15日
其他

探索现代的移动网络

exchange信息之后才会走加密通道,而TLS1.3在sever端发送完ServerHello信息之后就会走加密通道,就连证书信息也是加了密的。TLS1.3极大的缩短了建立连接所需要的时间。TLS
2020年9月2日
其他

老司机技术周报周边商店

这个网站上定做的,这次我选的是刀模贴纸,质量真的超级超级超级好,用老板的话说,这个贴纸防水抗晒不残胶,可以说的上是贴纸中的战斗机了。第一批定了
2020年8月31日
其他

写在《WWDC20 内参》之后

暂定计划要「原创内容激励计划」,打算拿出周报的大部分广告收入回馈社区,用来奖励原创作者。具体怎么做,还在考虑中,也希望有心的读者可以留言给一些建议,让这个社区的原创内容可以变的更多起来~
2020年8月30日
其他

让 Objective-C 框架与 Swift 友好共存的秘籍

来说有点超出其能力范围了!有许多⽅法解决这个问题,最简单的就是⽤完整的字符串来表达这个宏,而不是用相对复杂的宏拼接。但如果你是⽤这些字符串做枚举,建议你把它转成真正的字符串常量,这样就可以像前面的
2020年8月27日
其他

让 Objetive-C 库支持 Swift Package Manager

MFSJSONEntity这个库支持完毕之后,我们开始修改MFSCache这个库支持。具体的操作和MFSJSONEntity是一样的,只有一部分做了修改。我只说一下做了修改的地址。
2020年8月26日
其他

十年过去了,Swift 发展的怎么样了?

会遵循以下设计原则进行开发:对于命令行的提示和帮助十分友好,并提供一个编写的最佳实践;支持简单的一次性脚本命令,也支持复杂的多子命令嵌套,并提供良好的帮助信息;干掉了解析参数时的问题,通过
2020年7月21日
其他

iOS 14 苹果对 Objective-C Runtime 的优化

位地址。现在我们地址将变成这样这么做有几个优点:无论将库加载到内存中的任何位置,偏移量始终是相同的,因此从加载后不需要进行修正指针地址。它们可以保存在只读存储器中,这会更加的安全。使用
2020年7月15日