扩展
Swift中的扩展,有点类似于OC中的分类Category。
扩展可以为枚举、结构体、类、协议添加新功能,可以添加方法、计算属性、下标、(便捷)初始化器、嵌套类型、协议等等
扩展不能办到的事情:
不能覆盖原有的功能,不能添加存储属性,不能向已有的属性添加属性观察器,不能添加父类,不能添加指定初始化器,不能添加反初始化器.......
协议、初始化器
如果希望自定义初始化器的同时,编译器也能够生成默认初始化器
可以在扩展中编写自定义初始化器
类遵守协议实现的required初始化器,不能写在扩展中
协议
如果一个类型已经实现了协议的所有要求,但是还没有声明它遵守了这个协议,可以通过扩展让他来遵守这个协议
String
1个String变量占用多少内存? 下面2个Sring变量,底层存储有什么不同?
var str1 = "0123456789"
var str2 = "0123456789ABCDEF"
如果对String进行拼接操作,String变量的存储会发生什么变化?
str1.append("ABCDE")
str1.append("F")
str2.append("G")
ASCII码表:http://www.ascii-code.com/