各位好,这篇文章主要是给新手一些方向和想法~
纯属个人的经历和看法,可以一起以轻松的态度聊聊~
我个人是在 2015 年中开始接触 iOS 的开发,以 Objective-C 为一开始自学方向。
从简单游戏开始下手,像是猜数字、圈圈叉叉之类的,
练练基本的拉拉 UI、认识Storyboard、.h 的宣告、.m 的实作等。
接着刚好 Xcode 7 开始让免费的开发者可以装 App 至实体装置上,
发现自己原本都用 4.7 吋的模拟器执行,而到了 5.7 吋的装置上时,
会有跑版的问题,于是花了一些时间学习 AutoLayout。
而基本上 AutoLayout 有个概念熟悉即可,
除非是比较特别的效果需要思考一下彼此之间的 priority,
不然一般 App 都还蛮轻易解决这方面的问题;
而比较有趣的是,像在 ScrollView 里头做 AutoLayout 时,
要有 contentSize 的概念,而不要轻易的点“让系统补完 constraints”的按钮。
接着,在我准备面试前的一两个月,加入了一些 iOS 的开发社群
(e.g iOS @ Taipei、Cocoaheads Taipei等)
厚著脸皮加了版上比较活跃的几位前辈,并询问他们一些问题和方向,
于是开始练习其他实作:
- 气象资料开放平台(http://opendata.cwb.gov.tw/):
练习接 Api,当时我是写了一个去接目前各雨量观测站的 App,
筛选 10 分钟内有侦测到雨量的,
并在 MapView 上放上大头针,显示当区目前雨量。
(AFNetworking、MapKit)
- QR Code 扫瞄仪:
当初疯狂失败的原因在于模拟器无法执行打开相机的功能,
一开就会报 Crash,而后来在装到手机上才发觉当初懊恼的自己有多傻XD
不过这也学到了要好好 Google 的一课,
毕竟后来想想这明明是很简单下的关键字,且网络上很多人会告诉你这件事...
- 县市的各学校地址清单:
而因为当时有这需求,便写了一个可以读特定格式的资料,
然后画面简单地透过 UINavigationController 控制前后页,
跳转到县市 -> 乡镇 -> 学校 -> 资讯等,
练习一下 ViewController 间的切换和流程安排。
- 午餐电话簿:
结合上述所学(不包含 QR Code),
便写了一个会先判断离自己最近的雨量侦测站是否有侦测到 10 分钟内下雨,
来作为筛选依据(下雨的话就只随机挑选有外送的),
随机挑选后并可以决定是否今天要吃XD
再透过 FMDB 的方式记录下来成清单,告诉自己这几天都吃什么...
(很无聊的功能,就只是想练习 FMDB)
而上述都有使用到一些第三方套件,也选择了 Cocoapods 来做管理。
于是我便拿着这些没什么商业价值的小工具上台北面试了...
很幸运的是,在面了两间之后,就拿到其中一间的 Offer,
便开始了以 iOS 作为工作的生活。
接着在这一年半左右的时间,开始写 Swift(报到的第一天被告知要写 Swift XDDDDD)
学习 ViewController 的生命周期,也体会到 Storyboard 和 Xib 之间的优缺点,
甚至用 Code 直接刻 View 的好处等。
很多事情都要等你真的遇到了,才会很深刻地体会到,
为什么当初有些前辈会这样建议你...
而自己在这段时间又玩了 Parse、Firebase、Fastlane、Fabric、Carthage,
以及和 Android 之间透过 Bonjour 联系之类的一些不是太重要的技能XDD
看似没什么重点的文章,想告诉新人们的是一句我从 iOS @ Taipei 聚会中听来的观念:
“在这领域的知识累积,并非是线性的成长,而是一个一个的点;
你平常能触及的东西越多,点越多,才能构成一个知识的平面。”
而社群的意义就在这,它帮你集结了在 iOS 各领域开发的人,
分享他们花了数个、或数十个晚上所得到的经验,让你了解其中的运作原理和设计想法。
产品和想法多数都是在互相碰撞的时候,产生而来的,
像是会使用 Firebase 的 real-time database,
和蓝芽装配的配对的话,那是不是能做一个即时的数据报告,
再加入类似 AWS 的 Cloud watch 的功能,送推播到另一个装置干嘛干嘛(还没想到XD)
对自己自学程式还没有想法的人,不如先放下手机看看你周遭的生活,
你想透过手机 App 帮你解决什么问题?
然而你便会找到方向,并找到一份适合你的工作,让你接触到更多 :)