Preface · 序
公众号内容同步备份 - 人生应当是 BFS,而非 DFS。。
- 本篇文章首发自我的公众号:
是的,没错,我又想开一个新坑了。
前段时间,我开始在备忘录里分析和记录自己的弱点,并尝试冷静地思考如何改善,亦或扬长避短。坦白说,其中一个较为严重的弱点是:不坚持。我有一些好的想法或者灵感,但总是会因为缺乏坚持而只是浅尝辄止,没有达到积累的复利。我还十分「选择困难」,总是想要选中一个「既要又要还要」的选项,但这样本身就是一种幻想。
最近偶然读到一本关于财富和幸福的书,其中的许多观点也和我产生了共鸣,比如:
培养迭代思维。生活中所有的回报,无论是财富、人际关系,还是知识,都来自复利。
(如果你想了解这本书,或者我的书摘,可以点击下方「阅读原文」即可跳转。)
所以,与其沉溺在自我的缺点中,不如行动起来,尝试改变吧,即使失败了也没有什么损失。
30 天挑战
丑话说在前面。我其实很清楚,30 天对于一个习惯的养成或是技能的习得来说都很短,所以 30 天只是起步,如果它能融入到我的生活,那就再好不过了。好处是,30 天相比一两周要长,可以让我有更好的完成度;对于实在无法坚持的内容也能及时止损。喔对了,虽然我的备忘录里已经写满了我想要挑战的内容,但 30 天挑战每次只对应一个挑战,也摒弃了「选择困难」。
为了挑战能够完成(不要打脸),我希望从最简单、最容易的事情开始,所以我选择了 SwiftUI —— 和我的老本行相关的一项内容。每次开始挑战前,我都会尝试粗略地定义好输入和输出,输入即我会通过什么资源学习,输出即完成挑战时,我能带给大家或者他人一些什么。这样既避免了我在过程中心猿意马,也可以给其他同学参考的价值和意义,有了输出我也可以更好地和大家分享。
输入
- SwiftUI Tutorials - Apple
- SwiftUI 与 Combine 编程 - 王巍
如有余力:
- SwiftUI 编程思想 - Chris Eidhof Florian Kugler
- SwiftUI by Tutorials - Antonio Bello, Audrey Tam, Bill Morefield and Sarah Reichelt
- watchOS With SwiftUI by Tutorials - Scott Grosch
输出
- 更新挑战于社交平台
- FOCUS app
- 暂不考虑设计、动效等其他额外附加项
每日记录
Day 8-9 - 07.02-03
- 学习 SwiftUI 与 Combine 编程
输出:
Day 6-7 - 06.30-07.01
暂无进展。
Day 5 - 06.29
- 学习 SwiftUI 与 Combine 编程
输出:
Day 4 - 06.28
- 学习 Apple 官方 Sample Apps Tutorials 之 Responding to User Input 部分
- 学习 SwiftUI 与 Combine 编程
输出:
Day 3 - 06.27
- 学习 Apple 官方 Sample Apps Tutorials 之 Presenting Content & Retrieving Content from a Server
- 其中 Editing Grids demo 涉及一些动画可参考
笔记:
@Binding
- 将绑定值传递到子视图时,该子视图可以修改其值,但只有父视图存储实际值
@State
- SwiftUI 识别变化并更新 UI
AsyncImage
.task
- 当视图首次显示时执行
ColorPicker
Day 2 - 06.26
- 学习 Apple 官方 Sample Apps Tutorials 之 Navigating Apps
- 其中 Date Planner demo 比较有参考意义
笔记:
@StateObject
- 每当数据发生更改时,SwiftUI 会自动更新使用(或观察)它的所有视图
- 修饰的类型必须为
ObservableObject
,内部的变量可以使用@Published
ObservableObject
- 如果其发布的任何值发生更改,SwiftUI 会通知所有观察者(使用这些值的视图)并自动更新这些视图
@Published
- 可以指示 SwiftUI 在其发生更改时通知所有观察者并更新其视图
@EnvironmentObject
- 访问最顶层注入的环境对象(
.environmentObject
) - 修饰的类型必须为
ObservableObject
- 访问最顶层注入的环境对象(
Day 1 - 06.25
- 完成学习 Apple 官方 SwiftUI Tutorials
- 将老版 demo 更新
- macOS 部分内容暂跳过(暂不涉及)
- 整体基于 iOS 14,相较于老版有部分更新(使用新 API 等)
- 在 GitHub 上找到一些 SwiftUI 开发的开源 app