2014-06-08 19 views
5

Sto cercando di capire un metodo per evitare i cicli di conservazione quando alcuni riferimenti nel ciclo sono tenuti in raccolte. La mia idea era quella di creare un wrapper struct:Forza un parametro di tipo generico come tipo di classe?

struct Weak<T> { 
    unowned let value: T 

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

Il problema qui è che unowned e weak membri devono essere di un tipo di classe (main.swift:3:17: 'unowned' cannot be applied to non-class type 'T'; consider adding a class bound), ma non c'è superclasse ragionevole per me, per richiedere che T ereditare da.

Esiste un modo per forzare T in un tipo di classe senza ereditare da un'altra classe specifica?

risposta

8

prova:

struct Weak<T:AnyObject> 
+0

che ha funzionato, grazie! Questo è ovunque nella documentazione? –

+0

Sì, leggi la sezione sui generici per la sintassi della definizione generica. Effettua una ricerca nell'iBook su AnyObject per ulteriori informazioni su tale protocollo. –

Problemi correlati