2014-06-08 148 views
5

我試圖找出一種避免保留週期的方法,當週期中的某些引用被保存在集合中時。我的想法是創建一個包裝struct強制泛型類型參數是類類型?

struct Weak<T> { 
    unowned let value: T 

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

這裏的問題是,unownedweak成員必須是一個類類型(main.swift:3:17: 'unowned' cannot be applied to non-class type 'T'; consider adding a class bound),但沒有合理的超我需要從T繼承。

有什麼辦法可以強制T是一個類的類型,而不從一個特定的其他類繼承?

回答

8

嘗試:

struct Weak<T:AnyObject> 
+0

這工作,謝謝!這是文檔中的任何地方嗎? –

+0

是的,閱讀泛型定義的語法部分。在AnyObject上的iBook上進行搜索以獲取有關該協議的更多信息。 –