2014-06-08 3 views
5

Döngüdeki bazı referanslar koleksiyonlarda tutulduğunda tutma döngülerini önlemek için bir yöntem bulmaya çalışıyorum. Benim fikrim bir sarmalayıcı struct yaratmaktı:Sınıf tipi olmak için genel bir tür parametresi zorlar mı?

struct Weak<T> { 
    unowned let value: T 

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

burada mesele unowned ve weak üyeleri sınıf türü (main.swift:3:17: 'unowned' cannot be applied to non-class type 'T'; consider adding a class bound) ait olması gerektiğini, ancak bana o T kaynaklanan devralma gerektirecek hiçbir mantıklı üst sınıf var.

T, belirli bir sınıftan devralmadan bir sınıf türüne zorlamak için herhangi bir yol var mı?

cevap

8

deneyin: çalışmıştır

struct Weak<T:AnyObject> 
+0

, teşekkürler! Bu belgelerin herhangi bir yerinde mi? –

+0

Evet, genel tanımın sözdizimi için jenerikler bölümünü okuyun. Bu protokol hakkında daha fazla bilgi için iBook'da AnyObject'te bir arama yapın. –