2013-01-04 33 views
1

我有一個NSBlockOperation它創建了一些對象。 NSStringNSData被置於用戶信息NSDictionary中。該塊然後用這樣的userInfo發送NSNotification將帶有NSNotification的對象創建到外部世界

這是一個代碼片段:

NSArray *dataHolder = // this array is filled with data created within block 
    NSArray *keys = [NSArray arrayWithObjects:idKey, notificationDataKey, nil]; 
    NSArray *values = [NSArray arrayWithObjects:identifier, dataHolder, nil]; 
    NSDictionary *userInfo = [NSDictionary dictionaryWithObjects:values forKeys:keys]; 
    // notification follows 

沒有什麼特別的,此代碼,我擔心的是時,DataHolder,這只是NSDataNSArray,尤其是這是用來動態創建圖像並傳遞給用於顯示(無操作),並且該塊在通知後不使用或改變它們。

我無法使用委派,因爲多個控制器可能處於活動狀態並正在等待該數據。

我在問這種情況是否會導致任何問題,如果我需要特別注意變量,例如用弱,強,塊或其他標記。

整個項目在ARC下。

回答

0

你的問題是相當模糊,但你應該注意以下幾點:

  • USERINFO強引用被通知對象
  • 你的字典是強引用由USERINFO對象
  • 只要當你在另一個線程中完成你的操作,並且不再修改數據時,沒有多線程問題
  • 發送通知時,請注意接收數據的線程,因爲這可能會導致接收方notificat離子。通常,NSNofificationCenter的舊API在發件人的同一線程中接收呼叫。新的API(基於塊)允許您指定接收通知的隊列。