Swift
communal
UI特效网
展开
-
Swift 强大到犯规的extension
Swift 中的扩展可以:添加计算型属性和计算型静态属性 定义实例方法和类型方法 提供新的构造器 定义下标 定义和使用新的嵌套类型 使一个已有类型符合某个协议语法扩展声明使用关键字extension:extension SomeType { // 加到SomeType的新功能写到这里}一个扩展可以扩展一个已有类型,使其能够适配一个或多个协议,语法格式如下...原创 2019-10-23 17:55:23 · 151 阅读 · 0 评论 -
Swift子类构造方法调用父类构造方法
swift 中子类init调用父类的init方法必须写在最后。如下实例:子类Chemistry中init构造方法调用父类的init方法完成属性初始化,调用的父类init方法super.init(physics: physics)必须写在方法最后一句,否则报错class Subjects { var physics: String init(physics: String...原创 2019-10-23 14:15:53 · 782 阅读 · 0 评论 -
Swift 闭包引起的内存溢出
swift 中由闭包引起的self强引用导致的内存溢出,必须使用unowned(无主引用)才能释放,weak(弱引用)也不可;如下实例:必须在闭包asHTML中使用[unowned self] in 声明self,这样在最后释放时,才能成功释放掉paragraph对象。class HTMLElement { let name: String let text...原创 2019-10-23 12:42:16 · 400 阅读 · 0 评论 -
Swift对象是否之交叉引用、声明引用内存释放
交叉强引用导致内存溢出,故作为属性的对象需要使用weak(弱引用)、unowned(无主引用)其中一种方式声明,这样在对象被析构造时,交叉引用的对象会被成功释放掉如下实例,Person声明Apartment,Apartment声明Person,强引用的情况下,最后的youj = nil, number73 = nil释放时失败的;如果作为属性的对象使用weak、unowned声明则在最...原创 2019-10-23 11:58:39 · 367 阅读 · 0 评论 -
Swift 结构体的引用
swift中结构体的引用赋值时独立存在的。结构体总是通过被复制的方式在代码中传递例如一下实例,构造一个结构体MarksStruct,赋值给aStruct,然后再将aStruct赋值给bStruct,此时aStruct,bStruct的值是一样的都是mark = 98,但是内存地址并不一样,即不是同一个对象,仅仅是值相同的不同对象,当给bStruct重新赋值时并不会给aStruct造成影响。...原创 2019-10-23 11:05:07 · 695 阅读 · 0 评论 -
Swift中的Class对象资源释放
swift4+中对class的引用即为引用中,必须把所有的引用全部释放才会完全释放如下例子中,reference1 初始化的Person对象,然后将reference1赋值给reference2,reference3。此时三个声明对象引用同一个Person的内存地址及数据,当释放reference1时,Person对象并没有调用析构造方法deinit,故Person的内存并未被释放,继而再释放...原创 2019-10-23 10:55:34 · 1273 阅读 · 0 评论 -
Swift 5.0 函数
func minMax(array: [Int]) -> (min: Int?, max: Int?)? { if array.isEmpty {return nil;}//返回值可选:(min: Int, max: Int)? var arr = array; let len = arr.count; if len > 0{ arr.s...原创 2019-10-18 17:34:02 · 128 阅读 · 0 评论