กระบวนการ destructor สวิฟท์
ก่อนที่จะเป็นตัวอย่างของชั้นเรียนจะถูกปล่อยออก destructor ที่เรียกว่าทันที คีย์เวิร์ด deinit
เพื่อทำเครื่องหมาย destructor ใช้ฟังก์ชั่นเริ่มต้นที่คล้ายกัน init
เพื่อทำเครื่องหมาย destructors ใช้เฉพาะกับประเภทระดับ
หลักการกระบวนการ Destructor
สวิฟท์จะปล่อยตัวอย่างไม่มีความจำเป็นที่จะเป็นอิสระขึ้นทรัพยากร
สวิฟท์โดยอ้างอิงอัตโนมัตินับ (ARC) จะจัดการกับกรณีจัดการหน่วยความจำ
โดยปกติเมื่อคุณไม่จำเป็นต้องไปด้วยตนเองเช่นจะถูกปล่อยออกมาเพื่อทำความสะอาด แต่เมื่อใช้ทรัพยากรของตนเองคุณอาจต้องมีการทำความสะอาดเป็นพิเศษ
ตัวอย่างเช่นถ้าคุณสร้างระดับที่กำหนดเองเพื่อเปิดไฟล์และเขียนข้อมูลบางอย่างที่คุณอาจจะต้องถูกปล่อยออกมาก่อนเช่นชั้นที่จะปิดแฟ้ม
ไวยากรณ์
ในความหมายของการเรียนในแต่ละระดับจะมีมากที่สุดคนหนึ่ง destructor Destructor โดยไม่มีพารามิเตอร์ใด ๆ โดยไม่ต้องวงเล็บในถ้อยคำ:
deinit { // 执行析构过程 }
ตัวอย่าง
var counter = 0; // 引用计数器 class BaseClass { init() { counter++; } deinit { counter--; } } var show: BaseClass? = BaseClass() print(counter) show = nil print(counter)
เอาท์พุทการทำงานของโปรแกรมข้างต้นเป็น:
1 0
เมื่อการแสดง = คำสั่งศูนย์จะถูกดำเนินการ, เครื่องคิดเลขลบ 1, แสดงหน่วยความจำจะได้รับการปลดปล่อย
var counter = 0; // 引用计数器 class BaseClass { init() { counter++; } deinit { counter--; } } var show: BaseClass? = BaseClass() print(counter) print(counter)
เอาท์พุทการทำงานของโปรแกรมข้างต้นเป็น:
1 1