Swift iOS :个人这5个月的学习过程

2015年,我也去看了下objc,第一感受很很差,C语言和objc的扩展在一块儿,特别混乱,当时感受:git

  1. 都是函数,C的函数和objc的函数建立和使用差异很大,而且混合在一块儿
  2. objc函数带着参数标签的,函数长的受不了
  3. 即便是第一步最小的app,也得了解设计模式,它一开始就出场,叫作delegate

因此我认为objc语言比较原始,没有随着大流和其余语言一块儿演进,暴得大名,其实不符。加上UIKit的封装作的比较差。写了个小app后,我随即放弃。程序员

等到swift出来,2016年初,我略看了下,感受好多了,好歹语言显得和主流的毕竟接近。并且还有相似脚本的强大的对象字面量,因而开始真的学习。坎和objc相比,少了语言的障碍,可是:github

  1. UIKit的函数名依然带标签,依然比较长,你能够感觉下AppDelegate的第一个函数:
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
  2. 依然须要了解设计模式,首先仍是delegate,MVC。满篇的ViewController。

可是我仍是学了。写了一些笔记都在github上。当时找了7-8本书,感受太啰嗦,充斥者和当前要了解的东西不直接相关的内容,以及大量的和Storyboard相关操做的截图。这些截图让我心烦。我好歹是一个程序员啊,写代码看代码,跑代码,很差吗。看什么图,又不是学PS。
2017年,我决定把这个事儿捡起来,个人作法是上来直接看Apple的开发者文档。固然,难度确定是有,毕竟这个东西是面向UIKit自己的,讲究的是说明白自己,并且一向的,官方文档的例子都比较少。我看了这个文档中的UIKit,Foundation部分,看了不少遍。看了当天就要笔记,笔记保证都是有一个本身编写的能够跑得通的案例。这个案例必须一次粘贴到IDE内,而后就能够RUN。一个个控件的作下来,而且发布在掘金上。确实看不懂,查了google和SO也没有结果的,就打印出来,反反复复的看。swift

这时候我以为脑壳里面已经都是知识了,要爆了,必须得输出了。我而后又找了一个App,是开源的swift编写的v2ex客户端,Finb/V2ex-Swift。我翻了几个app,以为这个代码写的相对简单,规整,访问的论坛我也比较熟悉,因而决定从它这里,再来一遍个人所学,印证下个人知识。这个app除了代码比较清洁,结构简单外,也有用了很多第三方的包。好比上拉下拉控件,1password扩展,Keychain扩展,alamafire网络扩展等开发一个App几乎必备的包,能够一并学习。
地址在此:TofJ 的我的主页 - 掘金,不知不觉的,竟然积累了40篇了。在掘金写博客3月,骗了1500的关注呢。我一直秉承几个原则:设计模式

  1. 说什么就集中说什么,和当前要关心的无关的,不谈
  2. 代码贴入IDE,覆盖AppDelegate.swift,而后就能够RUN,保证能跑,不须要你在文章里面七拼八凑的
  3. 坚持用代码,不用StoryBoard。用了SB,就直接进入截图党,操做员,一张图细节太多,可是看过了,就毫无内容。我不反对使用SB作设计,可是极为反对使用SB来学习UIKit的UI设计

我在阅读Finb/V2ex-Swift代码中,也在按本身的想法作了一些重构:网络

  1. 大意是提炼公共代码,把代码搬来搬去的放在更加合适的地方,封装了简单的基础类,好比TableView,这个最经常使用的控件的封装。
  2. 固然,我一直反对使用delegate,而是想要转换它为Property-Method-Event的模式,因此封装的底层固然仍是delegate,高层就尽量引入Event。
  3. 在有些地方为了充分理解,可能须要抽取ViewController代码到单独的工程中来作验证。这个作法,让我吃了很多苦头。就是说你抽了ViewController,随即它的七大姑八大姨也跟着来,你们都是耦合在一块儿的。为了之后我作这个工做简单,我使用消息机制,把全部的ViewController的所有打破,原来的互相耦合,所有经过一个中心类,经过消息发送和接收处理变成了单纯的星型耦合。
    我把个人工做放到了这里。1000copy/fin 。这里的代码基于Finb的贡献,感谢他的分享。这个代码我但愿它更好阅读,也更好拆分,分而治之。

对Swift的学习依然继续。我但愿为它作出一个框架,有了这个框架Swift就像C#同样好用。app

相关文章
相关标签/搜索