iOS設計模式 七 迭代器模式

2021-07-14 13:08:32 字數 903 閱讀 3570

迭代器提供了一種順序訪問聚合物件(集合)中元素的方法,而無需暴露結構的低層表示和細節。遍歷集合中元素的職能從集合本身轉移到迭代器物件。迭代器定義了乙個用於訪問集合元素並記錄當前元素的介面。不同的迭代器可以執行不同的遍歷策略。

下面就是一種系統自帶的迭代器模式。

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...