之前是有接触过swift的,近几天空闲下来,就准备再看看swift,跟同学聊起来swift,他说他最近上下班都在学,我也阅读了一些关于swift的文章讨论(知乎讨论,简书讨论)。所以决定先试着写个简单的tableview试试。
动手之前先去官方查看了关于swift的介绍,文档多次强调了swift的简洁明了快速,让我一度都有些怀疑,写完简单的tableview,你会发现相比OC,真的是简洁了不知道多少倍!
先写了一个tableview,学习如何创建和使用视图,swift遵循协议的写法,定义变量(常量)的方式,方法的调用,语法……
swift的语法变动其实还是很大的,为什么呢,更新了swift3.0,2.0的一些就不能用了,OC就不同了,虽然有些方法是被抛弃了,但依然是可以用的。在写tableview的frame的时候,我在百度上找到了一些2.0的写法,已经不适用3.0了,是会报错的,swift是不会向下兼容的。
swift都不需要引入头文件,self也不需要加,真的是简洁太多了!
as! 的用法 id object as! 固定类型的object
自定义cell的时候遇到了很多的坑,关于编译器的四项安全检查,关于重写init方法。
控件类名后面感叹号的意思是:一定不为空,?的意思就:不一定为空。切记……
2017 4.13更新
有很多好用的OC库都更新出了swift版本,最近又空了,swift也更新了3.1,就又研究了一下OC的代码约束三方masonry,swift叫SnapKit(github地址),记录一些变化和总结。我是用cocoapods集成的,这里有一点需要注意:
要多加一行use_frameworks!,不加终端pod install的时候会提醒你这个错误的,所以这里需要稍稍注意。
再就是导入这个Kit,就可以使用了,使用方法与OC的masonry基本是一致的,少了mas_开头的一些变量,并且在equalTo这个方法里可以直接填写值了。
这次还是有不太明白的坑点,我把程序入口的main删除了,使用代码作为程序的入口,在设置window的rootviewcontroller的时候初始化遇到了一点点小问题。
没查阅资料之前,我看到的viewcontroller的初始化方法只有方式一和方式二,方式一很显然是使用可视化编程用代码的初始化,对于网上说的方式二我还是有些模糊的。看到了方式三觉得很好用,那么为什么我们可以用let viewController = ViewController() 这种方式初始化类呢?原因可能是这个初始化方式是来自uikit,也就是调用了Object-c下的UIViewController初始化方法,是object-c 桥接过来的。