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

有没有大佬能概述下 ios 中 Swift 开发 APP 的认知框架?

  •  
  •   uswood · 114 天前 · 838 次点击
    这是一个创建于 114 天前的主题,其中的信息可能已经有所发展或是发生改变。
    背景:只学过 python,也因为生活原因没有很深入地具体做出什么东西来,只是把语言基础,bs4 这种框架学了玩了下。UI 制作也停留在 VB 那种拖空间画出来的概念上。。

    非常好奇,像 swift 这种开发 IOS 的 APP,到底是怎么做出来的?

    1 、市面上几乎没有或者过于老旧关于 swift 的书,也就是说大家都是看 swift 的文档?
    2 、swift 制作 ios 的 app 也是有各种框架用吗?官方的框架还是。。
    3 、是不是 swift 写数据处理的东西,然后套上一个 UI 就行了,这个 UI 是要写屏幕参数一样的代码一行一行写出来的吗,有的 app 还有各种动画效果,这是框架还是。。。

    希望有大佬能帮助建立一个大题的认知。。谢谢
    7 条回复    2021-03-02 00:59:50 +08:00
    maxmak
        1
    maxmak   114 天前
    官方的框架
    有拖控件的
    laowudxf
        2
    laowudxf   114 天前
    这题我会,iOS 开发 5 年
    开发 iOS 的框架的话就一个苹果官方的一套,UI 都是基于 UIKit 这个官方框架的,现在大部分都流行纯代码写 UI 页面,也支持可视化写页面,布局的话也是代码和可视化都支持的,动画的话也是可以用代码写的,音视频处理的话也有官方的框架,网络的话会喜欢用第三方的封装好的框架,基本底层也都是基于苹果的网络库,数据持久化方面,支持简单的文件归档存储,和轻量数据库 sqlite 以及苹果的 orm coredata 。
    关于软件架构的话,苹果官方的 UIKit 都是基于 MVC 架构,也推荐大家使用 MVC 架构,另外也流行 MVVM,不过 MVVM 的架构大家用起来各有各的实现,封装起来比较麻烦。
    honghaoz
        3
    honghaoz   114 天前 via iPhone
    用 SwiftUI,简洁明了。这是 Apple 定下来的 UI 框架未来。数据层用 Combine/RxSwift 。MVVM pattern 就挺好。
    uswood
        4
    uswood   114 天前
    @maxmak 谢谢!

    @laowudxf 谢谢懂了~学到了

    @honghaoz 谢谢~去搜一下
    uswood
        6
    uswood   113 天前
    @PerFectTime 真的哇塞,谢谢!!
    agagega
        7
    agagega   39 天前 via iPhone
    刚学 iOS 不久,以我自己的理解给前面的 V 友补充一下,先说楼主的问题吧:

    1. Swift 现在的大版本号是 5,语法到 4 才基本稳定下来,前几个大版本差不多更新一次旧的代码就编译不过了,所以网上或者书里的很多 Swift 资料现在拿过来不一定是对的,OC 其实没有这个问题。

    学 Swift 入门的话看到一些资料用的 OC 可能看不懂,但学过一点 Java 或者 C++的话花点时间看一下 OC 的语法也不难,不要求会写,能大概看懂意思就行,这样对学 Swift 也有帮助,比如 Swift 调用方法的语法感觉就明显是在向 OC 兼容。

    国内 iOS 用 OC 的还是很多(其实是因为新项目少了吧),但这两年苹果推的框架都是 Swift 写的,Swift 已经慢慢变成熟了。苹果的文档的确不太行,面向 StackOverflow 编程吧。而且我总觉得网上 iOS 资料明显没有前端来得丰富。

    2. 官方支持的框架有两个,一个是 UIKit,一个是 SwiftUI 。UIKit 是 iOS 起初就有的; SwiftUI 是 19 年 WWDC 才发布的,20 年开始完善一些,基本能达到能独立写简单小项目的程度。但不了解 UIKit 直接上 SwiftUI 有点类似不懂原生 DOM 直接学 React,遇到坑是必然的,所以还得回头看 UIKit 。当然其他一些技术,比如 Flutter/ReactNative 还有网页套壳之类的都可以开发,体验可能赶不上纯原生。

    SwiftUI 的特点是 MVVM,就像前端那几个框架,数据流动的顺序变清楚了,可以少很多不必要的代码(和 bug )。UIKit 是 MVC,也就是你定义好了界面之后,界面里的组件会关联一些 Controller,它们负责加载数据或者处理各种点击事件、切换页面之类的。

    这些处理可能是通过重写 Controller 基类的回调,或者实现某个组件的 Delegate (就是接口的意思),也有可能通过 Notification (系统传递消息的机制,不是用户收到的那个消息)或者直接继承组件对应的类来做。说起来是 MVC,但我感觉框架并没有对如何组织代码做太多明确限制。这个听起来很抽象,跟着教程做过两个 Demo 就懂了。(苹果官方以前有个教程,现在扔 Archive 里了..)

    然后在界面之外 iOS 有很多很多功能框架,比如相机的、定位的、人工智能的,这里有些可能和界面都没多大关系。

    3. SwiftUI 的界面是代码写的,但很清楚,比较容易改。UIKit 的话有两种方法,一种是用代码自己实现,另一种是在 Storyboard 里拖控件。拖控件可以避免写很多繁琐的代码,属性和布局啥的在窗口里自己调,然后可以把控件和代码里的一个对象关联起来,在运行的时候就可以用这个对象操作它。动画也是框架提供的,iOS 的 API 对动画考虑得很周全。UIKit 比较麻烦的一个东西是布局,因为从手机到平板尺寸都不一样,所以有个 autolayout 机制,通过约束来确定组件的位置和大小,这个不难理解但用起来还挺烦的。

    另外 SwiftUI 肯定是未来的方向,iOS14 的小组件都只能用 SwiftUI 写了,虽然等它完善可能还要好多年。它的大优势是写一套代码可以在手机电脑多个平台上面用。
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2066 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 14:43 · PVG 22:43 · LAX 07:43 · JFK 10:43
    ♥ Do have faith in what you're doing.