我在我的控制器中創建按鈕(存在於我的視圖內)的outletCollection。由於視圖已經對其包含的按鈕有強烈的參考。在創建此集合Xcode添加了此代碼
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *cardButtons;
爲什麼要擁有一個數組,如果我不想擁有它包含的對象的所有權?
請注意上面的strong關鍵字。
我的問題是:
a)爲什麼這個代碼會打破,如果使用弱而不是強?
b)數組的所有權是否會給我它所包含對象的所有權?
我對這個問題的看法:
數組是隻是一個指針的集合(在這種情況下)。由於這些指針所指向的堆的部分已經被視圖所擁有,所以我不能再追蹤:)
Pedant攻擊!你可以使用'CFArrayCreate'和合適的'CFArrayCallBacks'來創建一個非保留的'NSArray'(因爲它們是免費橋接的)。但是,這將是'unsafe_unretained'有效,而不是'弱',所以除非你知道你在做什麼,你不應該這樣做。 – Tommy
@Tommy謝謝!徵求意見。現在我將在代碼中使用NSArray,而不是使用其他任何東西。 – aMother