回答
該委託是一個單一的消息傳遞協議。如果您想要發送更改的多個對象,則需要使用NSNotifications。
您可以通過使用通知中心,像這樣的對象:
NSDictionary *userInfo = @{@"myObject" : customObject};
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName:@"myNotificationString" object:self userInfo:userInfo];
如果想監聽通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myCustomObserver:)name:@"myNotificationString" object:nil];
和設置選擇
-(void)myCustomObserver:(NSNotification *)notification{
CustomObject* customObject = notification.userInfo[@"myObject"];
}
我可以通過通知傳遞一個對象嗎? –
剛剛更新了答案,祝你好運! –
不要忘記調用removeObserver時釋放 –
創建一個小新班級稱爲代表。是否採用搜索欄協議,以便它可以成爲主要的搜索欄代表。讓這個類提供一個方法'addSearchBarDelegate:',它將把委託添加到一個可變數組中。當它獲取委託消息時,它將它轉發給每個註冊的委託。
你可以很容易地設置一個充當委託多路複用器的蹦牀對象。這個想法是使用一個代理對象,它將代表一組代表。當調用方法時,它將覆蓋forwardInvocation或使用* IMP_implementationWithBlock *將消息傳遞到數組中的每個委託。
然後,所有你需要做的是添加方法:attachListener和的removeListener(順便說一句:看到這是如何開始得到類似通知?)
這裏有一個樣本項目:https://github.com/aleph7/MultiDelegate
欲瞭解更多信息檢查出色的Objective-C運行時間:https://developer.apple.com/library/mac/documentation/cocoa/reference/objcruntimeref/Reference/reference.html
感謝您的深入解答。每個人都知道NSNotifications,但不是都願意使用它們。 – user1244109
- 1. gevent多個StreamServer偵聽器
- 2. web.xml中的多個偵聽器?
- 3. javascript中的多個事件偵聽器
- 4. Android中的多個偵聽器
- 5. Dropbox Datastore - recordsChanged個人表的偵聽器?
- 6. 單個Spring的KafkaConsumer偵聽器是否可以偵聽多個主題?
- 7. 多個偵聽器可以使用相同的代碼嗎?
- 8. 處理多個操作偵聽器
- 9. 服務器偵聽多個端口[Java]
- 10. 服務器偵聽多個端口c
- 11. 偵聽多個TCP端口
- 12. 創建偵聽多個表的全局觸發器
- 13. 觸摸偵聽器偵聽邊距
- 14. 我的tcp偵聽器偵聽哪個網絡接口
- 15. 兩個Oracle TNS偵聽器
- 16. 在多個JVM上配置ActiveMq偵聽器的多個實例
- 17. 單個微調控制器上的多個onItemSelected偵聽器
- 18. 偵聽器執行多次的效果
- 19. 兩個偵聽
- 20. 爲多個按鈕添加多個點擊偵聽器
- 21. 鼠標偵聽器和動作偵聽器的區別?
- 22. 將一個事件偵聽器更改爲另一個事件偵聽器?
- 23. Spring JMS偵聽器容器偵聽器安裝程序超時
- 24. Infinispan CacheEntryExpired偵聽器
- 25. Android - GPS偵聽器
- 26. 事件偵聽器
- 27. 表單的無效事件偵聽器
- 28. 我有兩個Message Listener正在偵聽相同的消息。如何確保一個偵聽器先於另一個偵聽器執行其代碼?
- 29. 單個Spring的KafkaConsumer偵聽器可以偵聽來自同一個/一個分區的多條消息嗎?
- 30. 在多對多表中放置SQLAlchemy事件偵聽器
標準委託模式只有一個指向委託對象的指針,因此只有一個委託。但是,您可以編寫委託客戶端來維護一組委託,或者您可以將一個委託編碼爲「級聯」到另一個委託。 –