2021-9 ~ 2022-10 总结 总结毕业来微盟也有一年多了,在这一年多的时间内,学到了很多东西,2022年9月26日,中午吃完了团队老大的散伙饭,回到公司,就得到通知,下午交接完,开始休假,然后商量赔偿的事情 这也是意料当中的事,今年一整年都围绕着这股气氛,从4月再到6月再到现在9月底,每一批都裁了不少人,从最早不赚钱的业务线,然后再到边缘业务,现在基础技术也基本上不存在了,虽然心里有预期,也有赔偿,但是心里总归还是有一点 2022-09-27 总结
SwiftUI基础知识 SwiftUI基础知识状态绑定 声明变量: 在View中使用@State声明变量 引用变量: 在body代码中通过self.的方式引用变量 转为Binding类型: 通过$前缀转为Binding类型 123456789101112131415161718192021222324struct StateDemo: View { @State private var isSho 2022-05-16 Swift
OOM 实战 之前有篇文章介绍过 OOM 的原理,我们都知道,苹果有 Jetsam 机制,我们系统日志当中可以看到 JetsamEvent 开头的日志,这些都是 OOM 问题而上报的 针对于 OOM 的优化,我们能够做什么 图片内存使用优化图片是发生 FOOM 的重灾地,之前遇到一个很有趣的问题,同样一张图片,Native 加载后到直接导致 FOOM 的发生,但是将这样图片放到 WkwebView 当中,则不会 2022-03-01 iOS进阶
iOS-Router架构选择 Here's something encrypted, password is required to continue reading. 2022-02-16 iOS进阶
iOS-ld段位移 __TEXT 段迁移的原理程序的构建过程包含 预处理 -> 编译 -> 汇编 -> 链接 等 4 个主要阶段,完成之后就会得到 Mach-O 可执行文件。 通过 $ man ld ,可以发现链接器有一个参数: -rename_p orgSegment orgSection newSegment newSection。使用该参数可以将orgSegment/orgSecti 2022-02-10 iOS进阶
iOS-启动优化 监控启动埋点启动终点记录方案 iOS 12 及以下:root viewController 的 viewDidAppear iOS 13+:applicationDidBecomeActive 分阶段埋点 +load、initializer的调用顺序和链接顺序有关,链接顺序又是按照 cocopods的 pod 命名升序排列,所以取一个命名为 AAA 开头的 pod ,可以让+load以及 in 2022-02-08 iOS进阶
iOS-系统C函数的hook fishhook方案通过解析bind、lazy_bind、weak_bind可以获取到元组列表,每个元组会告诉我们符号和指针信息,指针信息包括指针位于哪个段以及在段的偏移 在iOS中,我们使用用变量或类似NSLog()等外部函数并不是直接调用地址,而是在经过bind 或 lazy_bind后才能得到真正的地址。bind或lazy_bind后真正的函数地址记录在 nl_symbol_ptr 或 la 2022-02-01 iOS进阶
dyld 2 和 dyld 3 有哪些区别? 以及iOS15上dyld的变化 dyld 2 和 dyld 3 有哪些区别? 以及iOS15上dyld的变化dyld 是动态加载器,它主要用于动态库的链接和程序启动加载工作,它目前有两个主要版本:dyld 2 和 dyld 3。 dyld 2 dyld2 从 iOS 3.1 开始引入,一直到 iOS 12 被 dyld 3 全面代替。它经过了很多次版本迭代,我们现在常见的特性比如 ASLR,Code Sign,Shared Ca 2022-01-01 iOS进阶
Swift-weak的实现 在Swift中, SideTable 是针对有需要的对象而创建,系统会为目标对象分配一块新的内存来保存该对象额外的信息。 因为这不是对象必须的内容,所以这个 SideTable 可有可无。对象会有一个指向 SideTable 的指针,同时 SideTable 也有一个指回原对象的指针。在实现上为了不额外多占用内存,目前只有在创建弱引用时,会先把对象的引用计数放到新创建的 SideTable 去,再 2021-09-01 Swift