零基础如何学习 iOS 开发?

我创建了一个 CS193P - SwiftUI 和 iOS 开发的学习群组,有兴趣可以加入,群内学习者以北美为主,因此聊天请使用英语,谢谢。加入 Slack 群组

正文:

建议从 SwiftUI 开始,先玩简单的交互界面。用苹果官方教程:Apple Developer Documentation

为扩充知识面,没事听听博客。用 Swift by Sundell 的博客:Podcast | Swift by Sundell在完成这些后,你大概已经很明确自己到底想不想做 iOS 开发了,如果你觉得越来越好玩,继续这些。

研究 Apple Search Ad,推广你之前发布的那个应用程序,用苹果送的 100 美元学学广告搜索优化。Help - Apple Search Ads

在 WWDC 往年视屏里里研究下你喜欢的主题,可以从设计的视频看起,慢慢转向科技向。Design - Videos - Apple Developer

实在解决不了的问题,用苹果的 Develoepr TSI 去提问。开发过程遇到卡壳?不必放弃,请苹果官方帮助你

美术方面,学习 Sketch 做 Mockup,以及整理各种美术素材。The digital design toolkit

想做更复杂的东西,需要后台数据库,去学 Firebase。https://firebase.google.com如果你成功克服了 CS193p,或有一定的编程的基础,或者刚刚学好了 Swift 基础语法,想自己开发个什么东西。推荐走以下两条路精进。

如果你想先精进程序基础:SwiftUI 和 Combine 是描述式和响应式编程的核心体现,也是未来 iOS 开发的主要方向。推荐阅读阅读 @onevcat 的书 SwiftUI + Combine 教程 SwiftUI 与 Combine 编程

如果你想先精进交互界面:可以考虑手把手跟着教程做一些简单的交互和动画。推荐学习 Design Code 的 SwiftUI 视频教程。https://designcode.io/swiftui?promo=learnswiftui如果你自己感兴趣,没人可以阻止你。共勉。

更新 1: 补充说下 CS193p,如果你没有任何编程基础,上这节课会略感困难,强烈建议你先完成 Hacking with Swift 的 Swift 课程,那个非常短很好学。如果此时学 CS193p 仍然感觉吃力,可以先学习 100 Days of SwiftUI 这个教程。把 CS193p 当成你在学习 iOS 路上的一个里程碑,慢慢攻克,不必急。有些人不推荐这节课认为太难,但有一天你会发现,Paul 的这节课真心是 iOS 讲的最清楚的一节课。觉得它难是正常的,因为这节课没有水分,只有干货。

更新 2: 我个人反而不是很推荐看 Ray Wenderlich 的纸质教程,太无聊了,足以把你的耐心消磨殆尽!写的十分冗长,如果你感兴趣可以学他们的视频教程,做的稍微好一点。

更新 3: 有些人会好奇要不要学 OC,我的建议是,不学。向前看,前方只有 Swift 和 SwiftUI,如果你想回到过去可以去学 OC。不过真心没必要,甚至还有人建议先学汇编语言的,对于这些建议我无言以对。建议你思考一个问题,你是想成为独立开发者还是想找个工作,如果是独立开发者,忘掉 OC;反之如果你想找工作,先去看你感兴趣的工作的招聘要求,如果明确写了需要熟悉 OC,这说明它们有写代码年事已高,你可以考虑学或者换家公司考虑。

更新 4: 初学者会面临大家常常讨论的 SwiftUI, Flutter, React, UIKit 这几个词。其实它们说的都是应用程序的界面编程。SwiftUI 和 UIKit 是苹果自家的原生方案,建议优先考虑。如果你是独立开发,想要学习自己开发个应用程序,推荐优先学习 SwiftUI,好用到了极点。自然有一天你会需要一个 SwiftUI 没有的 View,这时候学一个专用的 UIKit 的 View 放进 SwiftUI 里就行。

更新 5: 上文中我推荐的学习方案主要从个人开发的角度出发,绝非应试。若你感兴趣的是去投简历,上面的思路也许不适合你,或不够。你需要去 leetcode 刷题。

更新 6: 贴一个我在「苹果官方ios应用是用swift还是objc开发?」问题中的答案,探讨苹果官方对语言的使用。

更新 7: 放一个我刚刚为自己的应用程序做的设置界面,纯 Swift + SwiftUI + Combine Framework,直接从原 UIKit 应用 UIHostingViewController 接到 SwiftUI。包括功能一起做好也就用了十个小时以内。简单动画用 Adobe XD, Invision Pro, Figma 还能搞定,复杂动画直接用 SwiftUI 极省时间。 />

可以想像在 2014 年 Swift 刚出来的时候苹果官方应用肯定是 objc,

那时候的库也基本都是 objc 的库。

2017 年之后 Swift 越来越稳定,Swift 语法逐渐稳定,猜测新的代码应该已经使用 Swift 开发了,

2019 年随着 Voice Memo 完全跨平台支持,以及 Music,News 等新应用程序也实现了跨平台支持,苹果必定用了 Catalyst 的 UIKit 支持。

我刚刚看了下苹果的招聘公告,在招 iOS News Developer,需求技能是UIKit 及对 Swift 的较强掌握,确认了苹果正在使用 Catalyst。

而在 2019 年 WWDC 之前,SwiftUI 仍在酝酿中,未来的几年会处于 SwiftUI + UIKit 的过渡期,可以大概预测新应用会慢慢转型到 SwiftUI 中。

预期下一次见到 News 更新的时候它大概就会部分用上新的 SwiftUI。

再再看,iOS 中的 Mail 应用程序在 13 中获得的脱胎换骨的变化,连 Bug 都和我最近使用 SwiftUI 遇到的问题一致,因此推断苹果现在已经在努力重构应用程序到 SwiftUI 了。

又由于 SwiftUI 是纯 Swift 框架,可以推断 Mail 肯定使用了 Swift。

2019 年苹果推的新框架 SwiftUI, Combine, CryptoKit 全部都是纯 Swift 框架,完全没有 OC 支持了,可以判断,苹果已经快过了 OC 到 Swift 的转型期,正在朝着 UIKit 到 SwiftUI 的转型上努力。

我猜测,为了更好的实现跨平台的大计划,2020 年的 iOS 14 中原生核心应用应该已经基本完成了向 Swift UI 的迁移。没理由一直停在过去。

当然如果应用程序本身要被时代淘汰,留在 OC 也是有可能的,没必要花时间更新肯定会被时代抛弃的东西。

一个有趣的想法,我认为未来 iOS 生态系统中大家对动画的使用会越来越多,应用程序更 Dynamic 的可能性越发的高。因为 SwiftUI 中添加动画简直是容易到极点,而且能脱离开 Auto Layout 大家也越容易搭建小型可复用的 UI 块,更容易实现对不同分辨率的适配。

举了例子,这是我刚刚搜索出的苹果对 iOS Books 的招聘要求。要求熟悉掌握 Swift。了解 OC 是一个加分项。符合逻辑,Swift 是趋势,了解 OC 是因为部分老代码需要链接或重写。 />

更新 9: 手机淘宝在 2019 年末做的 Swift 转型完成调查中提到:

“我们通过爬虫分析国内外 APP Store 排行榜 Top1000 的APP,通过文件扫描分析得到结论。国内使用 Swift 的 APP 约占比 22%,美区使用 Swift 的 APP 约占比 78%,其中美区剩余没有使用 Swift的APP大部分来自中国地区本地化的产品,如抖音,快手等,可以得出一个结论,国内还是小众的 Swift,在国外已经是现状。

Github/Stack Over Flow 社区等 Objective-C 开源库和问题提问已经基本停滞,未来我们在落地新技术,Objective-C 可能已经是最坏的打算,加之 WWDC 17年以来,苹果不再提供 Objective-C 的示例,组内同学也多次遇见 Objective-C Bug 去社区提问,毫无热度的情况。

苹果在 WWDC19 年发布了 4 个 Pure Swift 框架,无法简单的被 Objective-C 混编。未来我们极有可能因为苹果的强制推进风格和社区文化的落后产生技术踏空,无法迅速响应业务,甚至无法招聘到会使用 Objective-C 的工程师。“

/>

在我看来,很多人依旧会抓住过去不放,紧紧握住上世纪的最后一根稻草,留恋 OC 或者当下的的种种写法与库。这也合理,没人愿意承认自己所精通的知识正在过时。就像活着的时候没人在意自己也会死去,裁员时没人认为会裁到自己一样。

同 Swift Package Manager 终会替代 CocoaPods, Carthage 一样,

可见的未来肯定是 Swift + SwiftUI 的,这一目标早在 Chris 加入苹果时就确定了。

如果你扒大眼睛仔细看看 Swift Evolution 的更新方向,会发现一切都是 Swift 大局中的一步棋,早有计划,而且已经在一步步落实。

千万不要只看眼前,也不要纯听信我说的,去思考一下 ,苹果的大局究竟是什么。

如果你想面向过去编程的话,2020 就从 OC 入手去当一颗优秀的螺丝。

可是,未来,是留给向前看的人的。

我建议:

向前看,不要回头。

我正在制作一个系列教程「创作者的 iOS 独立开发指南」。

学习 iOS 开发之初我就希望有这么一个课程,能告诉我 iOS 开发到底在做什么,我需要掌握哪些技能?可惜我很快发现市面上的现有课程常范围过于狭窄关注于技术流,而缺乏对整个应用和领域的讲解。一款涉及早期设计,中期开发,后期宣传的 iOS 课程是我一直想见到的。我计划用生命中的半年时间把它制作出来,给你们,每一个想把创想变现的人。

目前课程已在少数派平台开始连载,地址在此。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值