web 开发想学苹果原生 app 的开发,有什么好的建议

2021-06-10 23:54:13 +08:00
 wingkai
我这里说的是泛指 iOS macOS iPadOS 这种,

感觉 web 技术局限还是太大,很多事情不好做。
想稍微试着做点收费的小东西也不好搞。
或者只是针对某个小需求做个小软件,上 electron 太夸张也没必要,还耗电。
所以对开发苹果的 app 有了想法(以后可以也想做个独立开发者)

之所以囊括三个平台一起讲,是因为我在用 telegram 的时候发现它的三端 app,ux 都很统一体验也非常棒。
盲猜应该有不少公用的代码吧,UI 层面样式什么的,响应式开发之类?

回到话题,所以目前开发苹果的 app,都是怎样的呢?
css 、js 、html,这些对应到 app 上、调试、打包、发布。

有没有什么学习路线或者教材可以推荐的。
苹果官网倒是有个菜谱的 iOS 软件,但如果我想做另外两个平台的呢?好像没看到对应的教程。

光是看 swift 语言的教程,好像也还没搞懂它和 app 的关系……
7984 次点击
所在节点    iDev
46 条回复
cz5424
2021-06-11 13:03:01 +08:00
@mcluyu 我是被这样坑了,结果发现 switfui 的好多问题都找不到答案,遇到了坑要自己摸索,还不如 uikit,一找就有答案。各大论坛还有一堆 objectC 的东西,都过时了
mcluyu
2021-06-11 13:20:30 +08:00
@cz5424 swiftUI 太新了, 这才第二年,很多东西没稳定下来, 至于 OC, 其实也没那么旧,特别国内应该绝大部分 APP,公司依然在使用,很多三方框架也依然是 OC 写的,因为 swift 基本可以直接调用 OC 写的大多数东西,反过来则需要做更多的兼容。
倒也确实有很多复制粘贴的文章,都是老旧的 API 过时的东西,新手不易甄别。
Leonard
2021-06-11 13:24:07 +08:00
@cz5424 #21 我现在还在写 OC,很多公司的项目全是 OC 的
3dwelcome
2021-06-11 13:30:08 +08:00
@agagega “HTML 生来就是描述式的(虽然是静态的)"

然而 VUE 硬生生把 HTML 玩成了动态式的(手动狗头),每个节点都有属性控制 class 样式,随时随地用虚拟 DOM 来刷新页面的显示结构。

这是传统 UI 望尘莫及的,Win32 或者 QT 都是通过传递消息来响应和修改界面。
tutuge
2021-06-11 13:53:48 +08:00
@3dwelcome "这是传统 UI 望尘莫及的,Win32 或者 QT 都是通过传递消息来响应和修改界面。" - 再怎么虚拟 DOM 操作 HTML,都要经过浏览器渲染,都还是“原生”在默默干活。。。
jielong
2021-06-11 14:17:12 +08:00
我觉得想一步到位自己写其实很难。
我也是个前端最近有在学习,买了 onevcat 的书,准备直接照着书本 demo 写。中间难理解的地方就先了解一下有这么个东西,然后直接跳过,之后再按自己的思路去改动 demo,加强理解。
3dwelcome
2021-06-11 14:22:01 +08:00
@tutuge 可问题是用习惯了虚拟 DOM 后,就再也回不去了。有了 v-show 后,不可能再去写个函数,手动来控制 DOM 的显示和隐藏。

对于交互式 UI 界面,不管是传统 SDK 还是现代 UI,用 VUE 理念基本能通吃 60%~ 70%。剩下的定制控件和大型数据表没办法,只能慢慢手写功能。

尤雨溪在知乎上说过,VUE 虚拟 DOM 的 backend,可以是任何平台。不一定局限于 HTML 的。
HongJay
2021-06-11 14:25:15 +08:00
flutter flutter flutter
LINAICAI
2021-06-11 14:37:20 +08:00
swiftUI
fffang
2021-06-11 14:46:26 +08:00
native 端没有 html+css 这种标记式的 UI,用的是命令式 UI 方式,你需要在 controller 里写一个 View 添加到父 View 上去。现在有新式的声明式的 UI 方式,也就是 SwiftUI,同时它也是声明式的。SwiftUI 是用 Swift 实现的。Swift 和 app 的关系就像 js 和 webapp 的关系。
调试的话使用 xcode 左上角的运行按钮,在 Xcode 代码区域左侧可以添加断点。打包、发布需要使用 Xcode 顶端工具栏 Product 选项里的 Archive,然后 Distribute 到 iOS 市场或 Mac 市场,略有区别。他们都需要你提供开发者证书。
linhongye
2021-06-11 14:51:26 +08:00
想个项目出来, 上 swiftUI 直接撸, 不会就搜索, 水平突飞猛进.
英语水平要过关, swiftUI 只有英文资料能看.
想招 swiftUI, 职位说明得用英文写...
HolmesYe123
2021-06-11 15:21:49 +08:00
lz 的前端思维太强了吧,搞其他端转不过来吧
Jiangzai
2021-06-11 15:37:01 +08:00
1. 语言的选择,iOS 目前有 Objective-C 和 Swift 两个,传统的大厂还是用 OC 的多些,打算个人开发可以直接学 Swift,未来可期,没有历史包袱。
huangyuhua2018
2021-06-11 15:44:59 +08:00
swiftUI 还没普及,感觉还得过个一两年,还是先得学会 UIKit 那一套
Jiangzai
2021-06-11 15:48:47 +08:00
0. 配置:Mac 电脑+Xcode+苹果设备(调试,也可暂无,使用模拟器) + AppleId 开发者账号,只注册不交钱的就行。
1. 语言的选择,iOS 目前有 Objective-C 和 Swift 两个,传统的大厂还是用 OC 的多些,打算个人开发可以直接学 Swift,未来可期,没有历史包袱。
2. 基本的语法在网上搜一下熟悉了就行。
3. 语法熟悉之后,还要了解一些苹果 UIKit 的基本 API,这才是开发 App 主要用到的东西,例如 UIButton 、UIView 、UITableView 、UICollectionView 等等,主要是视图上的,至于其他蓝牙、多线程用到再学就可以。
4. 掌握了这些就可以上手写一些小 demo 了,当然 SwiftUI 也可以考虑,更友好。
5. 教材我觉得可以先不用,介绍的很全,但是有不少其实暂时用不到,等遇到了瓶颈再找专门解决就行。推荐官网的文档!!!
6. Swift 只是一门语言,App 要运行起来,需要用到许多苹果封装的各种 Kit 才行。调试、打包这些都是 Xcode 的功能而已。
Jiangzai
2021-06-11 15:53:51 +08:00
另外说一句 flutter,我们公司现在开发就用,有好有坏。的确可以提效,但是有些能力必须借助于原生,也会遇到比较奇怪的问题,调试的时候其实还是要对应的 native 开发。另外,flutter 在 iOS 上的 UI 细节感觉没有原生那么好,毕竟是 google 推出的,怎么看都有安卓的味道
janus77
2021-06-12 20:54:06 +08:00
做小东西可以直接 swift,多端统一开发好像体验更好,另外 swift 也可以用于服务端
工具和软件基本都是苹果自己的一套,IDE+编译+发布都是 xcode,需要开发者账号,官网自带文档。
95276
2021-06-16 10:56:16 +08:00
11 楼说的网站很不错.
onevcat
2021-06-30 23:08:05 +08:00
什么!居然又有人要开始学 iOS 了?!
ryh
2021-07-06 12:44:52 +08:00
@onevcat 看见猫神,就想问 kingfisher 的缓存
我看 macOS 里是存在独立的目录而不是各个 app 的 sandbox 里的,那么有没有这种可能
app 某个 URL 的图片,比如说身份证 /隐私照片,是登录 /auth 后才能获取的,使用 kingfisher 缓存了,第 3 方其他的 app 知道这个 URL 的情况下,这个缓存会不会被第 3 方显示出来。
因为只是猜测所以没发到 GitHub issue 里,twitter 没法 message,只能发到这里,抱歉

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

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

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

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

© 2021 V2EX