你好,我是朱德权,毕业于哈尔滨工业大学计算机专业。目前就职于腾讯,在腾讯多个日活超千万的 App 中从事 iOS 开发、重构以及架构设计的工作。同时一直在开发和维护 HybridPageKit 这个开源的项目,旨在提供一套 App 内容展示的完整解决方案。
为什么我们还要学习处于下半场的移动开发?对我而言,这个问题就变成了为什么我会一直从事移动开发这个领域。
我想首先就是这个领域可以带来即时的成就感。还记得在当年实习的时候,第一次程序上线的激动。我迫不及待的告诉身边的人,打开 SOSO 网站搜索“天气”,出来的那几个模块就是我做的。这种可见可得的成就感,以及自己的作品和工作能被成千上万的人看到和使用,或许就是我选择从事面向用户开发、面向交互开发的原因。
而随着移动端设备的普及,移动开发自然接起了面向对象和交互开发的接力棒。用户可能不会很直观地了解各种算法起到的精准效果,也体会不到处理高并发场景的困难之处,但是他们会真切地感觉到流畅的交互和体验。同时随着 App Store 的开放,移动开发领域也是为数不多的,可以将我们的创意和想法独立落地成产品的领域,是一个充满创造性和想象空间的领域。无论是在校的同学、职场新人、甚至是八十多岁的老奶奶,通过移动开发,我们可以向全世界推出自己的产品,表达自己对世界的认识。
如今,移动开发告别了之前野蛮生长的时代,进入了下半场。但用户花费在 App 上的时间、企业对移动产品的预算仍在快速增长,同时随着行业趋势从 to C 到 to B 的转换,⾯向企业的 App 仍然是一⽚蓝海。
对于未来,面向用户和交互的开发和思维模式一直会占有重要的地位。任何高端前沿的技术,都离不开产品的落地、以及服务于人的宗旨。而面向用户的开发就是连接产品和技术的桥梁。比如 AI、VR、甚⾄是 5G 带来的万物互联,最终落实到产品,都离不开移动端的面向⽤户的开发技术和经验。
所以,对于想要从事开发⼯作的同学来说,移动开发仍然是一个非常巨⼤的并且持续增长的领域。
起步阶段的痛点
目前在国内很少有学校开设移动开发相关的课程,而整个业界一直在不断追逐新的技术趋势和方向,Objective-C 以及移动开发稍微显得有些“过时”。在移动开发进入稳定期的之后,大部分从业者也更乐于研究和分享更为深入的底层实现。
在这种情况下,初学者只能根据网上能搜到的资料学习。但这些资料也有很多问题,首先它们很多都是基于 iOS6、7、8 的课程、3-5 年前的博客和目前整个系统、技术迭代以及 API 的发展严重脱节;其次是资料零散,鲜有完整的由浅入深的 App 开发初学者们面对各种各样的文章、学习资料,学完这些并不能有效地串联起知识点,形成对 iOS 开发系统性完整的认识。最后就是这些教程都偏向理论,没有通过合适的工程思维帮助大家理解和消化理论知识,不适用于实战。
语言的选择
我在之前也临时从事过一段时间的安卓开发。虽然对于 Java 的理解很肤浅,对于安卓系统的认识还要随时查阅文档,但是我仍然能够完成日常的开发工作,做出基础的代码和架构上的优化重构,以及在一定的场景下提供合理高效的技术解决方案。相信你在对语言和系统进行学习和理解之后,会迅速转换角色,成为该方向的成熟从业者。
我想这是因为语言只是开发的工具,无论是 Objective-c、Swift、Java 甚至是 Kotlin,甚至是未来的新兴技术,服务于移动端面向用户的技术原理以及工程思维都是相通的。
而从实际的情况来说,国内的移动端市场经过几年的大浪淘沙,沉淀下来的 App 产品逐渐稳定,基本都是 Objective-C 编写的。⽽开发的新项⽬目也很难放下以 Objective-C 的历史包袱,大部分采⽤混编的方式。国内纯 Swift 实现的项目大多是小型项目、个人项目或者学习项⽬。所以对于国内开发者来说,无论是在⼯作中的⽇常开发、应聘、面试,还是技术上的合作,都以 Objective-C 项⽬为主。
课程主要会讲哪些内容? 有哪些特点?
这个课程基于最新的技术,一切从实践出发。
整个课程我会带你从 0 开始,完整地搭建⼀个包含全部常用功能的 App。而在这个过程中,不但会和你交流最基础的系统级实现,还会帮助你从工程的角度理解流行的开源项⽬解决的问题、或者在实际工程中遇到的关键技术选型,使我们从工程的⻆度,理解 iOS 应用整个体系的开发,以及构建应用的思维模式。
我们首先会从基础的 UI 讲起,通过一些简单的界面⽐如按钮、 TableView、CollectionView、WebView,以及 Naviagtion 和 Tabbar 等,搭建起⼀个简易的 App UI 框架,带你理解 App 的构成和基本开发思路。同时通过系统提供的基础 UI 组件,一窥 iOS 开发的基本设计模式和实现方法。
之后会结合 UI 完善基础功能,比如网络、图⽚、存储、数据解析、音视频处理等,在掌握实际项⽬中的设计思想和应用的同时,也带你了解每个基础方向业界的流⾏方案及开源项目,从⼯程的⻆度分析它们解决的问题以及应⽤场景。
最后,对一些常用的功能进行补充,包括 Extension 的开发、分享、登录、推送、iOS 上架等等,这些模块相对⽐较独立,但是可以让你对整个 App 的功能、包括移动开发相关的一些⽣态有全面的了解。
如果你是 iOS 开发的初学者,学完这门课程之后,你将能够系统性地串联起琐碎的知识点,对⾯向用户的开发有一个基本的认识,快速上手实现完整的 App,让你拥有将想法变成现实的能力。
如果你已经从事 iOS 开发,这门课程会帮助你梳理理 App 中的主要业务模块,迅速理解在实际工作中项⽬的代码结构,快速构建业务体系。
如果你是跨平台、Web 开发、安卓开发或测试开发者,这个课程能帮助你从整体上认识 iOS 开发的特点和不同,进⽽更好地进⾏业务合作。
欢迎你加入我们这个课程,一起开始一段有趣的 iOS 开发之旅。
PDF 课件和源代码下载地址:
作者回复: 从我个人的角度一直感觉语言是一个工具,最好的掌握的方法就是在实践中不断的使用和试错。其实我建议可以先熟悉下基本的字符串、字典、数组和函数声明调用等等基础的,之后直接看课程就可以,有不明白的地方搜索或者在课程下留言即可。坚持几节课你会发现常用的语法层面的知识其实比较少。至于语法底层实现原理以及高效优雅的使用,也是需要在实践中不断的体会的,单纯的看文档或书籍,对我个人来说很快就会忘记。你可以试下这个方式~至于我上面提到的基础的知识,随便搜索一下入门课教程我感觉就行,入门来说简单的过一遍就好,然后在实践中持续的不断的深入。
作者回复: 如果你问的是物理地址,那么这些framework是内置到xcode中的,具体的地址在/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks 全部的Api文档在https://developer.apple.com/documentation/ 在日常的使用中我们是不需要查看物理地址的,使用file - open quickly 输入即可跳转到对应的framework头文件的特定类中
作者回复: 不知道是不是有的fork没有更新 https://github.com/dequan1331/geektime-ios-course 可以看下这个应该是可以跑起来的。 代码是内容的一个补充,而且有的时候作为讲解的代码运行完就会删掉,建议还是看一遍课程哈。练习的话建议还是自己写一遍最好~
作者回复: https://www.cnswift.org/
作者回复: https://www.yiibai.com/objective_c 看看这个?
作者回复: 这个课程相对来说是偏向入门和中等水平,学习完之后如果不过瘾,想要了解iOS底层原理以及进阶,可以买这里的 戴铭 老师的课呀~
作者回复: 课程中只会讲OC哈,这个也是符合目前主流公司产品的现状,iOS开发中的设计思想都是一样的,在此基础上再学习swift的话是事半功倍的!
编辑回复: 需要提前掌握 Objective-C 的基础语法
编辑回复: 需要提前掌握 Objective-C 语法哦
作者回复: 👍