从 0 开发一款 iOS App
朱德权
腾讯高级工程师
24183 人已学习
新⼈⾸单¥59
课程目录
已完结/共 106 讲
第一章:课程简介和开发前的准备 (4讲)
第二章:实现App的基本界面 (33讲)
第三章:实现App的基础功能 (35讲)
时长 18:24
第四章:App功能扩展和完善 (34讲)
从 0 开发一款 iOS App
登录|注册
留言
7
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 42 | 集成和使用开源网络框架
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 | 结课测试&结束语
本节摘要

PDF 课件和源代码下载地址:

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

登录 后留言

全部留言(7)

  • 最新
  • 精选
Adam
前边还能看懂,就是被cocoapods安装及文本编辑这个课程搞蒙了。

作者回复: cocoapods用于iOS的第三方库依赖管理,本身是ruby的,所以不管从执行还是语法上都和OC有一定的区别,需要换一个角度看相关的知识。好多工作多年的同学对有复杂依赖的cocoapods使用也都有迷惑的时候,但是如果简单使用的话只要实际操作一遍即可掌握。可以在https://cocoapods.org/中找到全部的guides。简单的说,就是本机安装pods环境 - 创建/修改podfile文件 - 执行pod命令,这样pod就会根据podfile中的设置,集成相应的库到你的工程中。像课程视频中一样,可以自己手动练习一遍,基本的流程就可以掌握。如果有具体的问题不明白,可以留言我们一起讨论交流下哈~

2019-09-30
1
Geek_fee1d1
老师,参数多了个header怎么设置

作者回复: 没太明白具体的问题,方便具体的描述下问题?

2020-06-19
3
王小东@WeX
ld: warning: directory not found for option '-L/Users/seanwon/Library/Developer/Xcode/DerivedData/Test-bzfighexqkjhlvecamfuuymvnefr/Build/Products/Debug-iphonesimulator/AFNetworking' ld: warning: directory not found for option '-L/Users/seanwon/Library/Developer/Xcode/DerivedData/Test-bzfighexqkjhlvecamfuuymvnefr/Build/Products/Debug-iphonesimulator/AFNetworking' ld: library not found for -lAFNetworking clang: error: linker command failed with exit code 1 (use -v to see invocation) pod install 以后编译就直接出错了

作者回复: 这个问题一般来说,是在pod install之后,pod生成了新的xcodeproj,整个项目工程需要使用新生成的xcworkspace, 估计你还使用的是原来的xcodeproj。如果不是这个问题,建议上传下代码我在帮你看下哈。

2020-05-04
Geek_787812
网络请求每次都会调用failure block,不知道是为什么

作者回复: 需要看下具体的error以及错误码,就可以大概分析出错误了。网络级别常用的错误一般通过错误码大概都能定位,可以发下具体的url,或者具体的代码才能定位哈,可以上传下你的代码。或者对比下demo中GTListLoader文件看看哪里不同。https://github.com/dequan1331/geektime-ios-course。

2020-03-03
hulala
你好,我有两个小疑问哈 1、就是如果我未来想做组件化或者一些自己的组件抽成一个库,但代码不想公开,是不是就不能使用cocoapods这种方式,担心的是传上去后别人也能搜到,代码泄露了 2、这个有点离题了哈,就是以后如果用flutter混编,本来iOS、Android、web等是独立的git仓库,怎么让另外一个库(flutter代码)和他们一起管理,是不是就用git subModule 谢谢

作者回复: 1. cocoapods 是可以创建私有库的。对于大的项目好多也都是通过这个方式管理自己的组件。可以使用关键字 “pod 私有库”之类的在网上搜索下,有好多相关的文章。其实核心就是指定多个或者不同的pod repo 作为 source。同时配合上每个仓库的权限管理,就能做到保证私有的同时,使用pod来进行集成。 2. Flutter混编的话 ,当然可以使用subModule进行代码的管理,我猜测你使用这种方式集成是想使用《源码》进行集成和调试。但是使用这个方法有一个弊端,就是全部团队的同学都要安装flutter环境。所以其实较大一些的团队,对于Flutter都是使用产物集成,代码独立的project管理,然后将生成的framework通过pod的方式集成。当然再这个基础上,我们可以写些脚本,对于开发的同学使用源码集成,其他同学使用framework集成。

2020-02-17
Geek_931e55
podfile怎么生成的

作者回复: 就是普通的文本编辑就好,重命名为profile,具体可以参考https://guides.cocoapods.org/using/the-podfile.html

2019-09-07
一半一般
[!] AFNetworking has been deprecated in favor of Alamofire
2023-02-07
1
收起评论