从 0 开发一款 iOS App
朱德权
腾讯高级工程师
24183 人已学习
新⼈⾸单¥59
课程目录
已完结/共 106 讲
第一章:课程简介和开发前的准备 (4讲)
第二章:实现App的基本界面 (33讲)
第三章:实现App的基础功能 (35讲)
时长 18:24
第四章:App功能扩展和完善 (34讲)
从 0 开发一款 iOS App
登录|注册
留言
21
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 01 | 课程介绍
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | 常见App类型及技术栈浅析
04 | 使用Xcode创建第一个工程
05 | MVC模式:iOS中的架构基石
06 | iOS中的视图UIView
07 | 了解UIView的生命周期
08 | 视图的控制器UIViewController
09 | 结合视图和控制器构建Tabbar样式页面
10 | 使用Navigation构建App的基础交互
11 | iOS基本页面框架的构成和实现
12 | 系统函数中常见模式Delegate
13 | UITableView简介
14 | UITableView中Delegate和Datasource的使用
15 | UITableViewCell的复用及原理
16 | 结合子视图实现完整的列表界面
17 | UICollectionView的基本应用和实现
18 | UICollectionViewLayout的应用
19 | 基本列表视图的选择和使用
20 | 滚动视图的基类UIScrollView简介
21 | 应用UIScrollViewDelegate实现复杂逻辑
22 | iOS中滚动视图对比及App内应用场景浅析
23 | iOS中文字的展示:UILabel的使用与布局
24 | iOS中图片的展示:UIImage与UIImageView的应用
25 | iOS中按钮的实现:UIButton的使用
26 | UIControl以及Target-Action模式
27 | 使用UIGestureRecognizer实现自定义点击与手势
28 | 通过UIAlertView了解UIKit系统函数的设计和使用
29 | Web基础知识及WKWebView 介绍
30 | 使用WKWebView及Delgate实现简单的页面加载
31 | 认识观察者模式KVO并展示页面加载进度
32 | iOS开发中的Web应用浅析
33 | 使用UIView动画完善界面的交互
34 | 动画背后的CALayer基本应用
35 | CoreAnimation及开源动画框架介绍
36 | 常用代码规范和重构方式
37 | 结合UIKit分析常用App的页面结构
38 | 网络基础及请求的封装
39 | NSURLSession基础原理、组织和使用
40 | 使用系统网络架构NSURLSession加载网络数据
41 | 常用框架集成方式Submodule、Carthage和CocoaPods对比和使用
42 | 集成和使用开源网络框架
43 | iOS中的JSON解析
44 | 使用结构化的数据进行解析和展示
45 | 实现列表数据加载、解析和展示的完整流程
46 | iOS沙盒机制和文件结构
47 | 使用NSFileManager操作和管理文件
48 | iOS中的序列化NSCoding
49 | 开源存储方案对比与分析
50 | 缓存新闻列表数据及已读状态
51 | iOS中线程的基础知识及NSThread
52 | GCD的常用方法分析和使用
53 | 了解Operation、Runloop以及多线程开发总结
54 | 如何管理App中的图片下载与存储
55 | 开源图片框架接触的架构和使用
56 | 了解iOS系统的音视频框架
57 | 重构视频列表展示视频
58 | 实现简单视频播放器AVPlayer
59 | iOS消息机制NSNotification简介
60 | 使用Notification接收和处理播放状态通知
61 | 使用KVO监听和处理播放资源的状态变化
62 | CMTime及播放缓冲进度的获取和使用
63 | 使用单例模式重构播放器业务逻辑
64 | 常用App视频业务及流程浅析
65 | AutoLayout简介
66 | 使用AutoLayout实现通用ToolBar视图
67 | iOS常用布局方式选择
68 | 逻辑分辨率适配
69 | 物理分辨率适配
70 | 使用ImageAsset管理图片资源
71 | iPhone X适配
72 | iOS开发适配常用方法总结
73 | App启动过程及生命周期分析
74 | 通过App生命周期回调实现启动页
75 | 使用URL Scheme进行App间的唤起和通信
76 | Universal Link简介
77 | 常用组件化Target-Action方案
78 | 常用组件化URL Scheme方案
79 | 常用组件化Protocol-Class方案
80 | 实现简单的第三方登录和分享功能
81 | iOS中静态库的制作和使用
82 | iOS当中Framework的制作和使用
83 | OAuth和OpenID原理和使用
84 | 集成QQ SDK实现登录和分享功能
85 | iOS中常用日志和上报系统浅析
86 | 类CocoaLumberjack日志框架架构浅析
87 | Crash的类型介绍和常用收集方案
88 | 常用上报技术方案对比和分析
89 | iOS中定位和定位权限
90 | 定位功能实现和位置信息的获取
91 | iOS中推送和推送权限
92 | 使用UserNotifications实现本地推送
93 | 远程推送与APNs简介
94 | 使用UserNotifications接收远程推送
95 | iOS图标管理和动态更新
96 | iOS App Extension简介
97 | 实现Today Extension以及数据共享
98 | UITextField和UITextView
99 | 使用UITextField实现搜索条
100 | 使用UITextView实现输入框
101 | 复杂列表页实现方案及IGListKit浅析
102 | 复杂内容页展示逻辑及实现方案浅析
103 | App的签名原理和证书申请
104 | 常用iOS唯一标识符
105 | App的打包和上架流程
106 | 结课测试&结束语
本节摘要

你好,我是朱德权,毕业于哈尔滨工业大学计算机专业。目前就职于腾讯,在腾讯多个日活超千万的 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 课件和源代码下载地址:

https://gitee.com/geektime-geekbang/geektime-ios-course

登录 后留言

全部留言(21)

  • 最新
  • 精选
惜时如金
我找了好多网站,还是没有找到一些好的objective c的资料教程,希望看到objective c的资料,拜托老师录制一套,我想买,谢谢🙏

作者回复: 从我个人的角度一直感觉语言是一个工具,最好的掌握的方法就是在实践中不断的使用和试错。其实我建议可以先熟悉下基本的字符串、字典、数组和函数声明调用等等基础的,之后直接看课程就可以,有不明白的地方搜索或者在课程下留言即可。坚持几节课你会发现常用的语法层面的知识其实比较少。至于语法底层实现原理以及高效优雅的使用,也是需要在实践中不断的体会的,单纯的看文档或书籍,对我个人来说很快就会忘记。你可以试下这个方式~至于我上面提到的基础的知识,随便搜索一下入门课教程我感觉就行,入门来说简单的过一遍就好,然后在实践中持续的不断的深入。

2019-10-15
2
4
Wade
object-c 和 xcode 的api在什么地方?

作者回复: 如果你问的是物理地址,那么这些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头文件的特定类中

2019-05-24
3
哎哟喂
您好,github上面的代码pod了之后还是跑不起来,而且粗略看了一下代码不是完整的吧,感觉没有那么多内容

作者回复: 不知道是不是有的fork没有更新 https://github.com/dequan1331/geektime-ios-course 可以看下这个应该是可以跑起来的。 代码是内容的一个补充,而且有的时候作为讲解的代码运行完就会删掉,建议还是看一遍课程哈。练习的话建议还是自己写一遍最好~

2019-08-27
2
骑个隆咚锵老干部
请问有什么好的 swift 的学习资料吗?

作者回复: https://www.cnswift.org/

2019-05-22
2
龙王庙⇔三根杉
老师,有没有好点的oc手册分享下

作者回复: https://www.yiibai.com/objective_c 看看这个?

2019-04-18
2
tian
这个课程是不是偏入门型?以后会不会推出进阶的课程呢?

作者回复: 这个课程相对来说是偏向入门和中等水平,学习完之后如果不过瘾,想要了解iOS底层原理以及进阶,可以买这里的 戴铭 老师的课呀~

2019-04-18
2
4thirteen2one
采用的Objective-C?那Swift语言有涉及吗?

作者回复: 课程中只会讲OC哈,这个也是符合目前主流公司产品的现状,iOS开发中的设计思想都是一样的,在此基础上再学习swift的话是事半功倍的!

2019-04-18
2
prozrtr
请问学习这门课程 需要具备什么基础知识?

编辑回复: 需要提前掌握 Objective-C 的基础语法

2019-04-18
2
德育处主任
听了第一讲,决定买了。有1年前端基础,应该能听得懂吧?

编辑回复: 需要提前掌握 Objective-C 语法哦

2019-04-17
3
2
思尘
swift 版本的 https://ifable.coding.net/p/SampleApp/d/SampleApp/git

作者回复: 👍

2020-05-28
3
1
收起评论