2012-10-12 67 views
3

目標C中是否有類似於C#的東西yield return目標C中有沒有類似於C#收益回報的東西

+0

接受挑戰。 –

+0

可能的重複[Objective-C中有沒有與C#的yield關鍵字並行](https://stackoverflow.com/questions/2805837/is-there-any-parallel-in-objective-c-to-cs-yield關鍵字) –

回答

1

不,在Objective-C中沒有任何東西可以讓您輕鬆構建一個可迭代的解決方案。

Objective-C中的fast enumeration一般使用與C#,Java或C++完全不同的機制構建。採用該協議相對而言比較複雜,特別是與C#及其yield return相比,雖然它確實可行。

我發現Objective C塊爲快速枚舉提供了一個可用的替代方法。考慮實現基於塊的枚舉而不是快速枚舉 - 它允許您使用類似於yield return的樣式編程自己的API。另一方面,您的API的客戶端需要提供一個塊來使用您的枚舉。這並不理想,但可用,特別是對於複雜的枚舉器,例如基於樹的枚舉器。

+0

使用塊代替yield的好處還有很多,因爲回調可以包含更多,然後只包含返回的項目。 –

3

有沒有直接和,如dasblinkenlight提到,fast enumeration存在,但是有很大的不同。

邁克·阿什在2009年把這個問題上,並與發電機的實現(類似的概念)想出了:

http://www.mikeash.com/pyblog/friday-qa-2009-10-30-generators-in-objective-c.html

運行巫術的整齊漂亮一點,但我不一定會建議採用它僅僅是因爲它使設計模式與底層系統非常相似;在生產環境中使用維護和學習曲線的成本將非常陡峭。

相關問題