15.5 Swift隐式强引用
/** 15.5-隐式强引用 */
class Student { var name: String init(name: String) { self.name = name }
func show() -> Void { print("name==(name)") } deinit { print("(name) deinit!") } }
// 此时, stu0 和 stu1都引用了同一个对象 var stu0: Student? = Student.init(name: "Tom") var stu1 = stu0
stu0 = nil stu1 = nil
/** 上面的这个是显式的强引用 */
/** 什么是隐式的强引用呢? 对象加入数组中,对象如果是引用数据类型,那么数组会强引用该对象。 数组让该对象的引用计数加1 */ var stuarray = [Student.init(name: "zhangsan"),Student.init(name: "lisi")] stuarray[0].name = "zhangsanfeng" /** (1)当某个对象不在属于数组时,该对象的引用计数会减1 (2)数组本身被销毁的时候,它包含的所有对象不再属于它,因此如果对象是引用数据类型,该对象的引用计数减1 */
/** 这就是隐式强引用的一个例子。 还有一些其他的例子,比如说我们的定时器,需要注册一个对象,定时器被这个对象引用也是一个强引用; 子试图加入到父视图以后,父视图对子视图的引用也是强引用。 只要不是循环强引用,就没啥事。 */ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |