请问各位 iOS 网络编程要怎么学?

2018-10-25 11:27:51 +08:00
 MaxSoloware

语言:swift 水平:stanford 官方入门教程结束,搭建过几个小型离线应用

问题:最近想学 ios 网络编程,在网上找来找去发现这一块的知识没有什么比较权威的教程能够直接学习。主要有几个方法,一是看比较权威的《 iOS 网络高级编程:iPhone 和 iPad 的企业应用开发》可是这本书时间较早,所用的库都过时了,而且只有 OC 版本的代码。二是看 github 的源代码,这个方法需要找到 github 上的开源网络项目,问题是如果直接看代码而没有背后的知识的支撑是很难看懂的。

所以想问一下有经验的前辈?要怎么学,或者有哪些学习方法和资料是我没发现的?

3517 次点击
所在节点    Apple
14 条回复
targz
2018-10-25 12:08:29 +08:00
写一个 V2EX 的 app 🌚
mcluyu
2018-10-25 12:10:46 +08:00
AFNetworking, 一个 GET、一个 POST,足以应付 90%的 APP 开发
strongcoder
2018-10-25 12:16:50 +08:00
@mcluyu #2 对
xjbeta
2018-10-25 12:18:52 +08:00
zanyzephyr
2018-10-25 12:19:25 +08:00
@mcluyu
swift 应该用 alamofire 吧
kljsandjb
2018-10-25 12:22:37 +08:00
UNP
sea516
2018-10-25 12:26:39 +08:00
网络编程这块分两个 : 一个是 Socket 连接,一个是 HTTP 连接 看下 Alamfire、Moya 的源码
hohoho
2018-10-25 13:56:55 +08:00
Alamofire 只局限于 http 协议,再偏低层的话就 SwiftNIO。
cc85060
2018-10-25 14:05:36 +08:00
AFN 的源码建议可以看一下
vincentxue
2018-10-25 14:57:41 +08:00
问这个问题,我假定你是要问 HTTP 通讯。

不知道你目前是什么水平。如果是对任何网络编程都不懂,例如不知道常用的 RESTful 架构,JSON、XML 数据交换格式,那你得首先补充这几个基础知识。

如果你知道上面的基础,或者有其他语言的经验,那就好办了。你只直接用成熟的开源库就可以了,原因在于你可以少踩很多坑,专注做你要做的事,把网络的东西交给库去做。我认为你目前的水平还看不懂这些开源库内部的架构代码,原因在于库内部除了网络编程,还涉及很多线程、设计模式、语言技巧等等之类的东西,新手是很难看懂的,也没必要花时间去啃,等你熟悉了再去看就简单很多。

如果你想要直到用原生的代码如何做网络通讯,可以参见官方文档。苹果的绝大多数类库的文档都很完善,写的也易懂,有什么问题,第一时间可以去看看官方文档。

Swift 的 HTTP/HTTPS 通讯库通常是用 Alamofire,它是 AFNetworking 的 Swift 版本。但更多人会选择用 Moya,它基于 Alamofire 封装了一个类似于最佳实践的网络抽象层,这个库你如果有网络编程的经验你就明白它存在的意义。

延伸一些其他的你需要用到的。

JSON 解析一般用 SwiftyJSON。
ORM 一般用 ObjectMapper。
Core Data 你可以选一个顺眼的 https://github.com/topics/coredata?l=swift&o=desc&s=stars
SQLite 3 一般用 SQLite.swift。
资源管理可以配合 R.swift。
布局很多人用 SnapKit,但我已经转 PinLayout 和 FlexLayout (如果你会 CSS 的 Flexbox,用这个库你可以无缝切换)。


官方文档 URL Loading System:
https://developer.apple.com/documentation/foundation/url_loading_system
MaxSoloware
2018-10-25 16:39:37 +08:00
@vincentxue 感谢感谢,现在处于不知道常用知识阶段,看了你说的学习思路清晰了一点,不过还是要从基础知识学起。
之前写过一个很小的网站,对 Json 和 Http 通信方式有一些基础,不过 Restful 没有了解过,想再请问一下还有哪些基础知识是我这个阶段需要学习的
vincentxue
2018-10-25 17:44:57 +08:00
@fengyiqicoder 不客气。教人这个可是严肃话题,我不敢乱说。。我觉得你需要什么学什么就行了,现学现用。。你想要系统地学习就系统地学习。油管上很多教程的。
ruixingchen
2018-10-26 17:23:44 +08:00
如果你说的网络只是指 HTTP 的话, 简单请求使用自带的 URLSession 就可以, 需要更多功能的话 Alamofire 和 Moya, 如果是 TCP/UDP, 可以看看 CocoaAsyncSocket.
ruixingchen
2018-10-26 17:24:16 +08:00
最好的方法就是写一个 V2 的 App, 哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/500973

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX