Latest web development tutorials

Swift Proces destructor

Przed instancją klasy zostanie zwolniony, destruktora nazywa się natychmiast. Wpisz słowo deinit oznaczyć destruktora użyć podobnej funkcji inicjalizacji init aby zaznaczyć. Destruktory odnosi się tylko do typów klasowych.


Zasada Proces Destructor

Swift automatycznie zwolnić instancja nie jest już konieczne w celu uwolnienia zasobów.

Swift Automatic Reference Counting przez (ARC) obsługuje przypadki zarządzania pamięcią.

Zwykle, gdy nie trzeba ręcznie instancją jest uwalniana do czyszczenia. Jednak podczas korzystania z własnych zasobów, może trzeba zrobić jakieś dodatkowe sprzątanie.

Na przykład, jeśli utworzyć klasę niestandardową, aby otworzyć plik i napisać jakieś dane, może trzeba być zwolniony przed instancją klasy, aby zamknąć plik.

gramatyka

W definicji klasy, każda grupa może mieć co najwyżej jeden destructor. Destructor bez żadnych parametrów, bez nawiasów w brzmieniu:

deinit {
    // 执行析构过程
}

Przykłady

var counter = 0;  // 引用计数器
class BaseClass {
    init() {
        counter++;
    }
    deinit {
        counter--;
    }
}

var show: BaseClass? = BaseClass()
print(counter)
show = nil
print(counter)

Wyjście powyżej wykonywanie programu jest:

1
0

Kiedy show = nil stwierdzenie jest wykonywany, kalkulator minus 1, Pokaż pamięć zostanie zwolniona.

var counter = 0;  // 引用计数器

class BaseClass {
    init() {
        counter++;
    }
    
    deinit {
        counter--;
    }
}

var show: BaseClass? = BaseClass()

print(counter)
print(counter)

Wyjście powyżej wykonywanie programu jest:

1
1