迭代器提供了一種順序訪問聚合物件(集合)中元素的方法,而無需暴露結構的低層表示和細節。遍歷集合中元素的職能從集合本身轉移到迭代器物件。迭代器定義了乙個用於訪問集合元素並記錄當前元素的介面。不同的迭代器可以執行不同的遍歷策略。
下面就是一種系統自帶的迭代器模式。
nsarray *array = @[@1,@2,@3];
nsenumerator *enumerator = [array objectenumerator];
nsnumber *number;
while (number = [enumerator nextobject])
另外一種
nsarray *array = @[@"123",@"456",@"789"];
[array enumerateobjectsusingblock:^(id _nonnull obj, nsuinteger idx, bool * _nonnull stop)
}];
都是遍歷物件的方法。
蘋果公司提供了一種快速列舉方法,fastenumerator。
for ( ... in ... )
在mjextension框架中,作者使用了一種迭代器模式來獲取類及其父類的所有屬性。
typedef void (^mjpropertiesenumeration)(mjproperty *property, bool *stop);
+ (void)mj_enumerateproperties:(mjpropertiesenumeration)enumeration
}
是一種不錯的方法,可以借鑑。
iOS設計模式 迭代器
一 介紹 迭代器 提供一種方法順序訪問乙個聚合物件中的各個元素,而不需要暴露該物件的內部表示.遍歷集合中元素的只能從集合本身轉移到迭代器物件。迭代器定義了乙個用於訪問集合元素並記錄當前元素的介面。不同的迭代器可以執行不同的遍歷策略。提供一種方法順序訪問乙個聚合物件中得各個元素,而又不需暴露該物件的內...
設計模式 迭代器模式
迭代器模式是屬於物件行為性的模式。首先是定義 提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露物件的表示方法。迭代器的結構圖 適用性 1 訪問乙個聚合物件的內容而無需暴露它的內部表示 2 支援聚合物件的多種遍歷 3 為遍歷不同的聚合結構提供乙個統一的介面 支援多型迭代 協作 concretei...
設計模式 迭代器模式
iterator,提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示。迭代器模式就是分離了集合物件的遍歷行為,抽象出乙個迭代器類來負責,這樣既可以做到不暴露集合的內部結構,又可讓外部 透明地訪問集合內部的資料。iterator迭代器抽象類 迭代器抽象類 abstract clas...