2015-11-05 15 views
9

Używam biblioteki innej firmy do nowej aplikacji, którą robię przy użyciu Swift. Autor klasy/biblioteki zrobił to końcowo, używając słowa kluczowego final, prawdopodobnie w celu optymalizacji i zapobieżenia nadpisywaniu jego właściwości i metod.Czy mogę przedłużyć ostatnią klasę w Swift?

Przykład:

final public class ExampleClass { 
    // Properties and Methods here 
} 

Czy jest możliwe dla mnie rozszerzyć klasę i dodać kilka nowych właściwości i metody do niego bez nadrzędnych wartości domyślne?

tak:

extension ExampleClass { 
    // New Properties and Methods inside 
} 

Odpowiedz

7

Przedłużenie nie może zawierać zapisane właściwości, ale można dodać metod wewnątrz.

5

Rozszerzenia (takie jak kategorie Celu C) nie zezwalają na przechowywanie właściwości.
Metody i właściwości obliczeniowe są jednak dobre.

Powszechnym (ale hackowskim IMO) obejściem w Objective-C było użycie associated objects, aby uzyskać pamięć w obrębie kategorii. To również działa w Swift, jeśli jesteś import ObjectiveC. Ta odpowiedź zawiera some details.

+0

Przypomnijmy, że działa tylko w przypadku powiązania podklas "NSObject". –

Powiązane problemy