本期概要
- 论题:苹果多个产品线的更新介绍
- 面试模块:动态库与静态库的差异
- 优异博客:关于该不该换作业以及怎么准备面试
- 见识:一个新的、偏技能范畴的博客引荐模块
- 学习材料:Rust 数据结构与算法
- 开发工具:Aria2GUI,一款支撑多种协议的轻量级命令行下载工具
本期论题
@zhangferry:苹果的多个产品线带来了一波更新。
macOS Monterey 12.3
- Python 2 被从体系中移出了,但新体系中也并没有预装 Python 3,需求开发者手动安装。
- Universal Control(通用控制):键盘、鼠标和触摸板能够在 Mac 和 iPad (iPadOS 15.4) 端无缝衔接。
- M1 芯片的电脑能够调配支撑空间音频的 AirPods 运用头部追寻功用。
iOS 15.4
- 支撑戴口罩的 FaceID 功用,仅支撑 iPhone 12 及之后的机型。
- 新增了 37 个 Emoji 表情。
Xcode 13.3
- 新增了一项针对 Swift 的编译优化
defaults write com.apple.dt.XCBuild EnableSwiftBuildSystemIntegration 1
- Instruments 取得了多项提高,提高了 leaks 、memory graph debugger 扫描的准确性等。
问题收集:
- 反响打包时有 pod 相关反常
- 反响编译变慢
Swift 5.6 Released
- 类型体系的提高。Type Placeholders SE-0315
- 改进了指针交互的功用
- SPM 增加了运转新插件的才能
还有一个小优化:SE-0290: Unavailability Condition
面试解析
收拾修正:JY
静态库和动态库的差异
静态库(Static Library)
特色如下:
-
分发文件大
-
静态库默许仅将有用到的类文件
link
到Mach-O
中 (以类文件为最小链接单位) -
ipa 包小(为了 App 瘦身,尽量将代码放静态库中)
- 静态库中某个方针文件的代码没有被任何地方引证,则这个方针文件不会被链接到可履行文件中去(分类代码常常被优化掉,一般都运用
-Objc
和-all_load
或许-force_load
来处理静态库分类加载问题)
- 静态库中某个方针文件的代码没有被任何地方引证,则这个方针文件不会被链接到可履行文件中去(分类代码常常被优化掉,一般都运用
-
App 冷发动速度快
- 条件是不运用
动态库拆分
调配动态库懒加载方案
- App 发动流程中有
rebase
和bind
,多个静态库只需求rebase
和bind
一次
- 条件是不运用
-
存在符号抵触或许
-
同享
TEXT 段
- iOS 9 以前单个 Mach-O 的 TEXT 约束 60M
- iOS 9 今后单个 Mach-O 的 TEXT 约束 500M
-
不需求额外签名验证
-
静态库符号的可见性能够在链接期间被修正
-
文件格局多为
fat
格局的静态库文件 -
方法多为
.a
与.framework
-
静态库不含
bitcode
时,引证静态库的方针布置时就不能包含bitcode
动态库(Dynamic Library)
特色如下:
-
分发文件小
-
ipa 包大(条件是不考虑懒加载的情况)
- 动态库会把整个
lib
复制进ipa
中
- 动态库会把整个
-
App 冷发动速度慢
- App 发动流程中有
rebase
和bind
,多个动态库只需求屡次rebase
和bind
- App 发动流程中有
-
需求设置适宜的
runpath
-
需求动态加载
-
需求签名且需求验证签名
- 会查看
framework
的签名,签名中有必要包含TeamIdentifier
,而且framework
和 host App 的TeamIdentifier
有必要一致 - Xcode 重签名,保证动态库签名一致性
- 会查看
-
需求导出符号
-
重复的
arch
结构 -
App 与动态库中重复代码能够共存,不会产生符号抵触
- 因为可履行文件在构建链接阶段,遇到静态库则吸附进来,遇到动态库则打个标记,彼此坚持独立性。
- 关于来自动态库的符号,编译器会打个标记,交给
dyld
去加载和链接符号,也便是把链接的进程推迟到了运转时履行。(比方 App 运用的是 3.0 版别 SDK,动态库运用的是 1.0 版别 SDK,能正常运转,可是会有危险)
-
链接后需求包含分发大小
-
冷发动进程中,默许会在
main
函数之前加载- 默许情况下,过多的动态库会拖慢冷发动速度
- 假如选用懒加载动态库的方法,能够加速 App 的发动速度,能够运用
dlopen
和bundle
懒加载优化
-
文件格局
Mach-O
(一个没有main
函数的可履行文件) -
动态库不包含
bitcode
时,引证动态库的方针布置时能够包含bitcode
-
CocoaPods
从v0.36.0
开端,可添加关键字use_frameworks!
编译成类似Embedded Framework
的结构(能够称之为umbrella framework
)- 缺点:默许把项目的依靠悉数改为动态库(可运用
use_modular_headers!
,也能够在podsepc
添加s.static_framework = true
规避) -
CocoaPods
履行脚本把动态库嵌入到.app
的Framework
目录下(相当于在Embedded Binaries
参加动态库)
- 缺点:默许把项目的依靠悉数改为动态库(可运用
优异博客
收拾修正:皮拉夫大王在此
本期优异博客主题相对轻松,聊聊面试相关和生长相关的作业。本来想借助本期内容收拾下
rebase
&bind
的相关技能细节,可是这周被某些自媒体分布的裁人消息给刷屏了,恰巧我自己也是在最近换了作业,因而借助这个机会和咱们一同暂停下技能学习的脚步,抬头看看外面的情况。阅览后你将取得什么?
- 假如你在犹疑自己是不是该换作业,那么能够从文章中找到部分答案;
- 东野浪子和苍耳两位大佬是十分资深的大厂面试官,他们的主张是十分中肯的;
- 我自己近期面试的一些细节;
- 尽管不认同面试问陈腔滥调文,可是仍是给咱们准备了陈腔滥调调集,以供咱们增强面试信心;
1、假如你在犹疑期,请看下文
1.1 浅谈怎么理性的判断自己是否应该换作业 — 来大众号:东野职场派
@皮拉夫大王:上一年引荐过这篇文章,考虑到目前是金三银四,有些同学或许之前没有看过,因而再引荐一次。
2、面试官篇:知己知彼,面试官的关注点
2.1 给面试者的一些主张 — 来自:苍耳的技能博客
2.2 面试过500+位提名人之后,想谈谈面试官视角的一些期待 — 来大众号:东野职场派
@皮拉夫大王:以上两篇文章的观点实质上来说是一致的,面试官希望提名人是在平常作业中是有所考虑和行动的人,而不是临时抱佛脚去应试。因而用半年时刻去刷题温习基础知识,不如用这个时刻去仔细打磨一个项目。
3、提名人篇:近期面试的一些细节
3.1 刚换作业,说点找作业相关的作业~ — 来自大众号:皮拉夫大王在此
@皮拉夫大王:这是我自己近期的亲身经历,前段时刻和几个朋友聊了聊换作业的作业。包含:该走该留?怎么准备?怎么写简历?怎么投简历?面试中和面试后各有哪些问题?等等
4、最全基础知识收拾
4.1 《史上最全iOS陈腔滥调文面试题》2022年 — 来自51CTO:宇夜iOS
@皮拉夫大王:面试中多多少少会调查到部分基础知识,对基础不放心的同学能够看看。
见识
收拾修正:zhangferry
这一周阅览或许观看到的有价值的消息。
1、深度学习撞墙了 — 来自:机器之心
@zhangferry:早在 2016 年,深度学习教父级人物 Hinton 就曾说过,咱们不必再培育放射科医师了。但现在 AI 并没有取代任何一位放射科医师,问题出在哪呢?在 Robust.AI 创始人 Gary Marcus 看来深度学习或许就要撞墙了。整个 AI 范畴需求寻觅新的出路。
深度学习实质上是一种识别模式,当咱们只需粗略结果时,它十分合适,可是关于需求精确性操作且危险很高的作业,像放射学和无人驾驶,就需求很慎重了。人工智能确实没有咱们幻想的进化那么快,所以它的未来是失望的吗?并不是,作者提出 Hinton 这样的前驱把深度学习的研究方向带偏了,应当将深度学习和符号处理结合起来,这种混合人工智能或许才是最好的方向。
2、【译文】谷歌查找正在消亡 — 来自少数派:赵喧典
作者以为 reddit 才是目前最受欢迎的查找引擎,而谷歌查找正在走向消亡。以为谷歌不再被认可的原因有这几个:
- 广告:谷歌的大部分收入来源于广告,但过多广告占据查找词条会严重影响用户体会。
- SEO 优化:许多人的作业便是查找引擎优化,这违反了公正也会导致查找质量下降。
- 人工智能:人工智能在尝试帮你找到你想要的内容,但这种推测常常让人不满意。
3、领导,我想改进团队的共享气氛 — 来自大众号:hockor
@zhangferry:大多数人都会在作业中遇到技能共享这个作业,作为 TL 应该怎么打造杰出的共享气氛呢?首先清晰杰出的共享气氛是有很大优点的,比方提高团队的技能视野、发现团队牛人、提高团队战斗力、扩大团队影响力等。共享方法较普遍的定期举行技能共享会,任何的共享行为都应该被鼓励。“共享本身是一种精神上自我实现的行为,所以无论共享内容怎么,至少这种行为是慷慨的,咱们应该及时的、活跃的反响,去鼓励他们往前更进一步”。
一起作为共享的参与者,咱们应该抱着探索者的活跃的心态去听,有参与感的学习方法是十分高效的。
4、Usage statistics of content languages for websites — 来自网站:W3Techs
@zhangferry:当时国际上的网站按言语划分的话,英语最多,这个毋庸置疑。但第二多的竟然是俄语,更令人意外的是,作为运用人口十分多的汉语,其网站数量占比竟然排到了第 10 位。我能想到的原因是,俄语区域互联网开展比较早,催生了许多网站;汉语尽管运用人数多,可是相对会集,国内互联网的开展比较晚,近几年移动互联网浪潮催生了许多 App,但网站的创建则很少。
网站是目前人们获取信息最重要的途径之一,英语网站远超其他语种,也反响了当时英语国际的话语权是更大的。
学习材料
收拾修正:Mimosa
Rust 数据结构与算法
地址:github.com/QMHTMY/Rust…
一本 Rust 书本,有简体和繁体版(英文版和日文版正在撰写中),内容包含算法分析,根本数据结构和算法,外加一些实战,共有九章。包含了咱们常用的常见的数据结构的实现和讲解,配有详实的代码和清晰简明的图解。
工具引荐
收拾修正:CoderStar
Aria2GUI
地址:github.com/yangshun102…
软件状况:免费
软件介绍:
Aria2GUI
是一款支撑多种协议的轻量级命令行下载工具,能够轻松的下载离线资源。
关于咱们
iOS 摸鱼周报,首要共享开发进程中遇到的经验教训、优质的博客、高质量的学习材料、有用的开发工具等。周报库房在这里:github.com/zhangferry/… ,假如你有好的的内容引荐能够通过 issue 的方法进行提交。别的也能够申请成为咱们的常驻修正,一同维护这份周报。另可关注大众号:iOS生长之路,后台点击进群交流,联系咱们,获取更多内容。
往期引荐
iOS摸鱼周报 第四十六期
iOS摸鱼周报 第四十五期
iOS摸鱼周报 第四十四期
iOS摸鱼周报 第四十三期