school = school
我们让school 和 student 为nil
school = nil
student = nil
运行代码
发现两个对象都没有释放
原因分析:
school...要释放必须先释放它的属性Student ,系统就去释放Student的内存空间,发现他有一个属性叫school 然后又去释放school,就这样构成死循环,谁都无法释放
遇到上面的问题,原因就是相互强引用了...deinit {
print("学生对象释放")
}
}
运行下边的代码
school = nil
student = nil
运行结果:
学校对象释放了
学生对象释放
运行原理分析...describe()
运行:
崩溃
原因:
释放掉school对象,然后在student的方法中调用了school的方法,方法已经不存在了,所以崩溃了
使用weak
// 学生类
class...describe()
结果:
学校对象释放了
分析:
由于school被弱引用,计数器减一,school对象就被释放了,所以我们在调用的时候进行检测,如果对象存在再去执行方法,这样就避免了此类错误