V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MaxSoloware
V2EX  ›  Apple

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

  •  
  •   MaxSoloware · 2018-10-25 11:27:51 +08:00 · 3673 次点击
    这是一个创建于 2253 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    14 条回复    2018-10-26 17:24:16 +08:00
    targz
        1
    targz  
       2018-10-25 12:08:29 +08:00
    写一个 V2EX 的 app 🌚
    mcluyu
        2
    mcluyu  
       2018-10-25 12:10:46 +08:00
    AFNetworking, 一个 GET、一个 POST,足以应付 90%的 APP 开发
    strongcoder
        3
    strongcoder  
       2018-10-25 12:16:50 +08:00
    @mcluyu #2 对
    xjbeta
        4
    xjbeta  
       2018-10-25 12:18:52 +08:00
    zanyzephyr
        5
    zanyzephyr  
       2018-10-25 12:19:25 +08:00 via iPhone   ❤️ 1
    @mcluyu
    swift 应该用 alamofire 吧
    kljsandjb
        6
    kljsandjb  
       2018-10-25 12:22:37 +08:00 via iPhone
    UNP
    sea516
        7
    sea516  
       2018-10-25 12:26:39 +08:00
    网络编程这块分两个 : 一个是 Socket 连接,一个是 HTTP 连接 看下 Alamfire、Moya 的源码
    hohoho
        8
    hohoho  
       2018-10-25 13:56:55 +08:00
    Alamofire 只局限于 http 协议,再偏低层的话就 SwiftNIO。
    cc85060
        9
    cc85060  
       2018-10-25 14:05:36 +08:00
    AFN 的源码建议可以看一下
    vincentxue
        10
    vincentxue  
       2018-10-25 14:57:41 +08:00   ❤️ 4
    问这个问题,我假定你是要问 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
        11
    MaxSoloware  
    OP
       2018-10-25 16:39:37 +08:00
    @vincentxue 感谢感谢,现在处于不知道常用知识阶段,看了你说的学习思路清晰了一点,不过还是要从基础知识学起。
    之前写过一个很小的网站,对 Json 和 Http 通信方式有一些基础,不过 Restful 没有了解过,想再请问一下还有哪些基础知识是我这个阶段需要学习的
    vincentxue
        12
    vincentxue  
       2018-10-25 17:44:57 +08:00
    @fengyiqicoder 不客气。教人这个可是严肃话题,我不敢乱说。。我觉得你需要什么学什么就行了,现学现用。。你想要系统地学习就系统地学习。油管上很多教程的。
    ruixingchen
        13
    ruixingchen  
       2018-10-26 17:23:44 +08:00
    如果你说的网络只是指 HTTP 的话, 简单请求使用自带的 URLSession 就可以, 需要更多功能的话 Alamofire 和 Moya, 如果是 TCP/UDP, 可以看看 CocoaAsyncSocket.
    ruixingchen
        14
    ruixingchen  
       2018-10-26 17:24:16 +08:00
    最好的方法就是写一个 V2 的 App, 哈哈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5635 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:36 · PVG 09:36 · LAX 17:36 · JFK 20:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.