Swift 的初始化方法需要保证类型的所有属性都被初始化。所以初始化方法的调用顺序就很有讲究。在某个类的子类中,初始化方法里语句的顺序并不是随意的,我们需要保证在当前子类实例的成员初始化完成后才能调用父类的初始化方法:
class Cat { var name: String init() { name = "cat" } } class Tiger: Cat { let power: Int override init() { power = 10 super.init() name = "tiger" } }
闭包 可以类似 OC 里的 block 一样当作是一个对象,所以在最后一节“闭包是引用类型”中的例子,得到的一个闭包常量,这个闭包常量在内存里作为一个实例对象,此对象存储了捕获到的参数,调用三次就得到三个不同的结果:
typedef int(^xFuncTest) (int); -(xFuncTest)funcX { int __block inner = 0; xFuncTest blockTest = ^(int mark) { return inner += mark; }; return blockTest; } xFuncTest func = [self funcX]; NSLog(@"%d",func(1)); NSLog(@"%d",func(1)); NSLog(@"%d",func(1));
字符串分割数组 -- 基于空格
let fullName = "First Last" let fullNameArr = fullName.characters.split{$0 == " "}.map(String.init) // or simply: // let fullNameArr = fullName.characters.split{" "}.map(String.init) fullNameArr[0] // First fullNameArr[1] // Last
let 用于定义常量,定义完后不能修改。
var 用于定义变量,可以修改。
swift可以自动识别属性类别。
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
2286Swift 构造过程
Swift 的初始化方法需要保证类型的所有属性都被初始化。所以初始化方法的调用顺序就很有讲究。在某个类的子类中,初始化方法里语句的顺序并不是随意的,我们需要保证在当前子类实例的成员初始化完成后才能调用父类的初始化方法:
2285Swift 闭包
闭包 可以类似 OC 里的 block 一样当作是一个对象,所以在最后一节“闭包是引用类型”中的例子,得到的一个闭包常量,这个闭包常量在内存里作为一个实例对象,此对象存储了捕获到的参数,调用三次就得到三个不同的结果:
2284Swift 字符串
字符串分割数组 -- 基于空格
2283Swift 基本语法
let 用于定义常量,定义完后不能修改。
var 用于定义变量,可以修改。
swift可以自动识别属性类别。