Latest web development tutorials

กระบวนการ 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