1

我在適用於iOS的委託模式明白你想要的參考授人以弱,但如果我比如有這樣的:回調不安全的代表數組?

@property (nonatomic, weak) NSMutableArray *delegates; 

這個陣列中的

id<myDelegateCallback> 

實例陣列裏面有很強的物品保留。

我是否在具有此屬性的類內部分配/初始化數組,或者將數組設置爲由另一個類擁有的實例?

或者這不是Delegate模式的好實現嗎?我知道我可以使用通知等,但想知道這是否會實際上沒有任何ARC問題。

+0

你最好使用NSNotification。否則,你需要編寫一個自定義的NSMutableArray,它使用弱引用,以避免你的代理保留在對象中。 http://stackoverflow.com/questions/4692161/non-retaining-array-for-delegates# – Alan 2013-04-04 00:56:29

回答

2

您只能有一個指定的委託對象,而不是一個委託數組。一些類有一個委託和一個符合獨特協議的「數據源」,但這隻對需要從某個指定位置獲取內容的對象有意義。

但是,如果你要通知一些事情發生幾個聽的對象,可以考慮使用與NSNotificationCenter註冊的NSNotification。缺點是沒有正式的或聲明的協議方法讓聽衆遵守(如果有問題,編譯器會抱怨)。

Here's a related question with more useful information

+0

另外在我的經驗中,NSNotification比直接委託消息傳遞慢。 – Alan 2013-04-04 00:55:28