我有一個NSMutableOrderedSet。如何返回enumerateObjectsUsingBlock找到的項目?
我需要枚舉它,它看起來像集合上唯一的選項是基於塊。因此,採摘最簡單的基於塊的選擇,我有這樣的事情......
[anNSMutableOrderedSet enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if ([(SomeClass*)obj isWhatIWant]) {
*stop = YES;
// Ok, found what I'm looking for, but how do I get it out to the rest of the code?
}
}]
難道也有可能在塊外使用'__block SomeClass * someClassVar',然後在塊內部執行'someClassVar = obj'來將結果對象分配給塊外的塊變量?我還沒有嘗試過,但如果我正確理解__block關鍵字,似乎會工作 –
@Logicsaurus雷克斯是的,這將工作。有關__block關鍵字的更多信息,請查看此鏈接:http://stackoverflow.com/questions/7080927/what-does-the-block-keyword-mean –
是的,塊變量也可以。但使用這種方法時要注意範圍。我發現使用明確的回調更具可讀性,但它取決於您,以及它如何適用於您的實現。祝你好運。 – Tim