基本语法

与其他语言的不同点:

类型推断

Swift提供的第一个重大的改进是类型推断。使用了类型推断的编程语言,开发者不需要在声明中明确指定变量的类型。编译器会自动探知要赋给变量的值的类型。比如下面的例子,编译器会自动设定变量的类型为String:

这承托出了Objective-C的一个非常动态的本质。在Objective-C中,任何类型在编译期间都是未知的。这也是为什么你可以在运行时给已经存在的类添加方法,添加一个全新的类型,甚至于改变一个对象的类型。

1. let,var

泛型

如果你对C++很熟悉的花,那么你可以把这些和C++的template做类比。因为Swift是类型严格的,你必须方法可以接受的参数的类型。但是有的时候你的方法对于不同的类型来说作用是相同的。

容器

可变性

字符串

Switch表达式

回调

Enum

Struct,Class,初期化

2.optional

1.??

2.if let,var

3.guard else 作用域

guard的语法详解

3.for 循环 reverse

switch case 作用域,默认break

4.数组,字典

都使用[],遍历,查询,修改,合并,

[NSString:NSobject]

5.闭包 ()->(), oc的block void (^blockname)()

尾随闭包

6.类

属性,getter,setter,计算属性,didset,willset的用法

懒加载跟OC的区别(OC用的是判断别名是否为空,Swift的本质是闭包的延迟调用)

计算属性的本质是等于闭包,在每次调用属性是调用闭包

7.运行时获取属性列表

8.析构,构造

必须要释放的 1.通知,2.NStime,3.kvo

构造函数的继承问题?

便利构造函数?

解决什么问题:

1.检测输入,不符合条件时返回nil,不会耗费内存,2.扩展,统一设置属性

注意什么问题:

不生成对象,需要调用self.init。不能继承重写。

默认构造函数的有效无效问题?

在重载了构造函数的情况下,默认构造函数是无效的。因为构造函数中调用init前需要对值赋值。默认的不会赋值,所以无效。

构造函数(重写,重载),简易构造(extension来扩展)

析构函数哦deinit

:1.定时器nstime,displaylink 2.通知 3.kvo

使用kvc字典转模型需要注意的地方:

1.属性是对象,用option。2.固定类型时,赋值不要用?。3.不要使用private

9.循环引用的问题

闭包的循环引用

发生的条件:

1.在view里,定义了强引用,指向一个闭包 2.在闭包里调用了self。强指向了view

问题:

1.单例模式,在OC和Swift中的写法

2.高级的使用,

results matching ""

    No results matching ""