2014-06-08 17 views
5

Próbuję wymyślić metodę unikania cykli zatrzymania, gdy niektóre odniesienia w cyklu są przechowywane w kolekcjach. Moim pomysłem było stworzenie opakowania struct:Wymuszenie ogólnego typu parametru na typ klasy?

struct Weak<T> { 
    unowned let value: T 

    init(_ value: T) { 
     self.value = value 
    } 
} 

Kwestia jest taka, że ​​unowned i weak członkowie muszą być typu klasy (main.swift:3:17: 'unowned' cannot be applied to non-class type 'T'; consider adding a class bound), ale nie ma rozsądne nadklasą dla mnie wymagać T dziedziczyć po.

Czy istnieje sposób na wymuszenie, aby T był typu klasy bez dziedziczenia z innej klasy?

Odpowiedz

8

try:

struct Weak<T:AnyObject> 
+0

Zadziałało, dzięki! Czy jest to gdziekolwiek w dokumentacji? –

+0

Tak, przeczytaj sekcję o generycznych dla składni ogólnej definicji. Wykonaj wyszukiwanie w iBook na AnyObject, aby uzyskać więcej informacji na temat tego protokołu. –

Powiązane problemy