class MyClass {
deinit{
print("MyClass deinit")
}
}
var cls1:MyClass? = MyClass()
var cls2:MyClass? = cls1
var cls3:MyClass? = cls2
cls2 = nil
cls1 = nil
//执行下面代码后才会打印“MyClass deinit”
cls3 = nil
class MyClassOne {
var cls:MyClassTwo?
deinit{
print("ClassOne deinit")
}
}
class MyClassTwo {
var cls:MyClassOne?
deinit{
print("ClassTwo deinit")
}
}
var obj1:MyClassOne? = MyClassOne()
var obj2:MyClassTwo? = MyClassTwo()
obj1?.cls = obj2
obj2?.cls = obj1
obj1=nil
obj2=nil
//没有打印析构函数的调用信息
//关于弱引用的演示
class MyClassThree{
weak var cls:MyClassFour?
deinit{
print("ClassThree deinit")
}
}
class MyClassFour {
var cls:MyClassThree?
deinit{
print("ClassFour deinit")
}
}
var obj3:MyClassThree? = MyClassThree()
var obj4:MyClassFour? = MyClassFour()
obj3?.cls = obj4
obj4?.cls = obj3
obj4=nil
//此时obj3中的cls也为nil
obj3?.cls
class MyClassFive{
var cls:MyClassSix
init(param:MyClassSix){
cls = param
}
deinit{
print("ClassFive deinit")
}
}
class MyClassSix{
var cls:MyClassFive?
deinit{
print("ClassSix deinit")
}
}
var obj6:MyClassSix? = MyClassSix()
var obj5:MyClassFive? = MyClassFive(param: obj6!)
obj6?.cls = obj5
obj5=nil
obj6=nil
//没有打印任何信息
class MyClassFive{
unowned var cls:MyClassSix
init(param:MyClassSix){
cls = param
}
deinit{
print("ClassFive deinit")
}
}
class MyClassSix{
var cls:MyClassFive?
deinit{
print("ClassSix deinit")
}
}
var obj6:MyClassSix? = MyClassSix()
var obj5:MyClassFive? = MyClassFive(param: obj6!)
obj6?.cls = obj5
obj5=nil
obj6=nil
class MyClassFive{
unowned var cls:MyClassSix
init(param:MyClassSix){
cls = param
}
deinit{
print("ClassFive deinit")
}
}
class MyClassSix{
var cls:MyClassFive?
deinit{
print("ClassSix deinit")
}
}
var obj6:MyClassSix? = MyClassSix()
var obj5:MyClassFive? = MyClassFive(param: obj6!)
obj6?.cls = obj5
obj6=nil
obj5?.cls
class MyClassSeven{
unowned var cls:MyClassEight
init(param:MyClassEight){
cls = param
}
deinit{
print("ClassSeven deinit")
}
}
class MyClassEight{
var cls:MyClassSeven!
init(){
cls = MyClassSeven(param:self)
}
deinit{
print("ClassEight deinit")
}
}
var obj7:MyClassEight? = MyClassEight()
obj7=nil
class MyClassNine {
var name:String = "HS"
lazy var closure:()->Void = {
//闭包中使用引用值会使引用+1
print(self.name)
}
deinit{
print("ClassNine deinit")
}
}
var obj9:MyClassNine? = MyClassNine()
obj9?.closure()
obj9=nil
//不会打印析构信息
class MyClassNine {
var name:String = "HS"
lazy var closure:()->Void = {
[unowned self]()->Void in
print(self.name)
}
deinit{
print("ClassNine deinit")
}
}
var obj9:MyClassNine? = MyClassNine()
obj9?.closure()
obj9=nil
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有