学习 ios ( Swift ) 开发一个多礼拜的心得:入门到放弃

2019-07-31 09:41:08 +08:00
 xiangyuecn

学了一个多礼拜,看了 2 本书,毛都没写出来😂

主要是新入门,基础的功能都要从 0 开始写,够折腾的。不过还好蛮多 java 代码改改就能移植到 swift 里面。

遇到的几个问题吐槽一下:

  1. 粗略看了两本 swift ios app 的书,里面的内容感觉:原来写成这样的层次也可以出书(捂脸 。看完了官方的The Swift Programming Language LANGUAGE GUIDE,稍微浅显易懂了点,算有点价值吧

  2. 没有抽象类这个玩意,不知道怎么写子类必须实现某些方法,现在用一个父类加一个 protocol 接口组合起来当做抽象类,写着别扭。

  3. 遇到问题搜 10 篇文章,有 6 篇是抄的还不带格式,另外 3 篇在讲故事,剩 1 篇终于把问题解决了。

  4. 至今没找到怎么把任意对象转成字符串,比如:obj:AnyObject, 好希望有:obj.toString(),现在用的"\(obj)"有点丑。

  5. 一个方法注释里面明明说会引发异常,但方法并没有用 throws 把异常抛出来也没有其他措施,强制用 try 捕获会显示黄色警告,折磨死人。参考:FileHandle.write 往文件写数据这个方法,没任何返回值也没有抛任何异常,但注释说会引发异常,怕怕。也许是使用姿势不对😂

  6. xcode 项目那个文件虽然是文本,但几乎不是人工能编写的(有点反人类)。同样是新入门,Android Studio 的项目管理就没有这么难产。

慢慢积累吧,还好 swift 语法还算正常不用去写 oc ( oc 看起来像写甲骨文,学不动)。入门到放弃!但真放弃却是不可能的,慢慢磨吧。有大佬指点迷津就更好了😊

16811 次点击
所在节点    程序员
116 条回复
chipmuck
2019-08-01 00:17:41 +08:00
@onevcat 这两个链接看得出戏 [手动狗头
geying
2019-08-01 02:58:40 +08:00
最近也在看 ios
可以去 YouTube 上找一些简单的应用教程
swift 基本语法会就 ok 了 也就是视频里写的大多都能看懂 看不懂的语法再去看文档或者百度
tomoya92
2019-08-01 07:54:16 +08:00
tomoya92
2019-08-01 07:55:37 +08:00
madtcsa
2019-08-01 08:28:15 +08:00
IOS 开发,除了 Xcode 比较难用。其他的都很好。
Swift 很好用,除了 let arrary = [String]() ,鬼知道设计者咋想的,声明为 let 的数组不能更改数组元素
xiangyuecn
2019-08-01 08:58:04 +08:00
@tomoya92 #84 点开看了一下大佬的博客,发现一个灰色链接,原来是昨天已经看过了一篇文章,好巧吧😁

《 swift4 WKWebView 使用 JS 与 Swift 交互》不过这篇文章内容当时看时感觉和别的文章一样,千篇一律。wkwebview 搜索到的 js 调用 swift 代码基本上都是通过 webkit.messageHandlers。这个路子我没有试过,但明显有致命缺陷:不能同步返回调用结果,简单的功能调用,都要走重量级延迟的 callback。

目前 js 调用 swift 代码我采用的 swift 端重写 prompt 弹窗界面,今天还在完善这里面的接口。js 的 prompt 有个特性是:同步+支持输入(标题、默认值)+支持输出(返回文本结果),其实是用的 Android 4.x 过气版本的老路子,但并未发现 ios 有类似的文章。
free9fw
2019-08-01 09:06:15 +08:00
明显 lz 能力欠佳
xiangyuecn
2019-08-01 09:07:13 +08:00
#86 刚才又搜索了一下“ ios wkwebview js ” 没有同步返回结果相关的文章,但加一个同步关键字“ ios wkwebview js 同步”就有了一大堆类似的方案😂 遇到问题时往往就是这样,关键时候搜不到,平时搜索一大堆😁
xiangyuecn
2019-08-01 09:08:14 +08:00
@free9fw #87 被你发现了😁 有人指点一下会好很多呀
finab
2019-08-01 09:56:29 +08:00
@yikuo 可以看看上面喵神的解释,如果实在要这样,继承某个父类吧,
好像也没有可替代 protected 修饰符的,稍微有点像的可以用 fileprivate,然后将子类写在一个文件里
你可以搜一搜 Swift protected 看看相关的讨论
finab
2019-08-01 09:56:52 +08:00
@XDDD
@mxalbert1996
难道 "\(obj)" 不是相当于 String(describing:obj) ???
wxl1380610
2019-08-01 10:00:40 +08:00
现在前端坑很多 , 还是学前端吧 ?
mxalbert1996
2019-08-01 12:22:25 +08:00
@finab 你再读一遍楼主的第 4 个问题
jevonszmx
2019-08-01 13:05:59 +08:00
@Aixtuz 从 csdn 就看得出来,百度的技术真的烂,被 csdn 这种采集站玩坏了
finab
2019-08-01 14:19:28 +08:00
@mxalbert1996 然后呢?
mxalbert1996
2019-08-01 14:23:18 +08:00
@finab 楼主自己说觉得"\(obj)"有点丑问有没有更正式的方法,然后现在有人回答了你来说这两个不是一样么,废话本来就是一样的啊,只是回答了楼主的问题而已。
finab
2019-08-01 14:28:19 +08:00
@mxalbert1996 喔,明白,但我其实是回另外一个人的 “唯一正确的方法是使用 String(describing:obj)” ,

之前已经有人说了 “\(obj)” ,但是他说 到他那为止,还没人说出正确方法, 唯一 正确的方法是 String(describing:obj),
然后我回复
难道 "\(obj)" 不是相当于 String(describing:obj) 么, 怎么"\(objc)" 就不是正确的方法
fvckDaybyte2
2019-08-01 14:42:55 +08:00
2 swift 子类可以继承 extension,oc 的话直接继承 category,子类必须强制实现里面的方法

5 写 ios 无论 oc 还是 switft 都没用过 try,处理异常通常都是 completion block 读 NSError ……如果异常会导致段错误或者 crash 都是提前规避…… try 虽然支持,我自己从未用过😂
xiangyuecn
2019-08-01 14:59:42 +08:00
@fvckDaybyte2 #98 swift 不用 try catch 的写法能不能举个例子呢,还有某个方法调用可能会导致异常,该怎么提前规避呀
fvckDaybyte2
2019-08-01 16:47:32 +08:00
@xiangyuecn

func requestForUserDataWith(_ parameters: [String: String], completionHandler: (_ result: [String: Any], _ error: Error) -> Void){
//.. Code process
}

如果这个方法有异常(错误)就是直接在 completionHandler 里返回,就是把 java 里面的 throw 替换成 return,catch 替换成 completionHandler...

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

https://tanronggui.xyz/t/587738

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

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

© 2021 V2EX