2012-06-07 7 views
6

Próbuję zrozumieć, jak zastosować szybki protokół wyliczania (pod iOS/cel C) dla klasy, którą tworzę. Czytałem fragmenty dokumentacji Apple'a, ale ... nie do końca rozumiem!Przykład przyjęcia/wprowadzenia szybkiego wyliczenia dla mojej klasy?

Ktoś ma przykładowy kod, na który mogłem patrzeć?

Co próbuję zrobić: Mam szereg obiektów, nad którymi chcę, aby nadawca mógł iterować. Nadawca chce użyć konstruktu typu "do środka". Połów jest taki, że nie chcę, aby nadawca widział obiekty w tablicy, ponieważ niektóre z nich nie są poprawne w kontekście aplikacji.

Innymi słowy, chcę, aby mój iterator zwracał podzbiór obiektów w tablicy pasującej do określonych kryteriów.

Wolałbym nie tworzyć żadnych tablic nowych, aby nie spowolnić pracy.

Odpowiedz

8

Sam Apple's FastEnumerationSample demonstruje to całkiem dobrze. Z jego dźwięków może jeszcze nie zauważyłeś.

Istnieje również this blog post.

+0

Świetnie! Tak, nie widziałem tego. Dzięki! –

+0

Ten wpis na blogu jest technicznie bardzo dokładny, ale bardzo źle napisany. Wskakuje do rzeczy, których nie musisz znać, i pokazuje rzeczy, których nie powinieneś robić, masowo ukrywając rzeczy, które musisz wiedzieć. Stanowiska Mike'a Ashta są zwykle znacznie lepszej jakości :(Przeczytałem je wiele razy i nadal jest to niezrozumiałe - nie polecam zawracać sobie głowy. Lepiej włamać się do źródła Apple, dopóki nie będziesz w stanie odgadnąć, w jaki sposób je zrozumieć. – Adam

0

Nie wiem, co masz na myśli przez "nadawca chce użyć konstruktu typu" w środku ". Rezultat, o który prosisz, byłby prawdopodobnie lepszy dzięki zastosowaniu indexesOfObjectsPassingTest :, który da ci zestaw indeksów wszystkich elementów w twojej tablicy, które przejdą wszystkie testy, które dla niego ustawiłeś.

Można również użyć metody filtersArrayUsingPredicate: do wyprowadzenia nowej tablicy będącej podzbiorem oryginału - wiem, że powiedziałeś, że nie chcesz tworzyć nowych tablic, ale jeśli chcesz zwrócić podzbiór swojej tablicy, następnie musisz utworzyć nową tablicę.

2

Znacznie lepsze wyjaśnienie tutaj:

http://www.cocoawithlove.com/2008/05/implementing-countbyenumeratingwithstat.html

NB: Kod źródłowy Apple jest technicznie poprawne, ale słabo wyjaśnione, a przede wszystkim bezużyteczny, chyba że lubisz grać „domyślać, co programista myślał/palenia tego dnia” .

Po lewej stronie, post Mike'a Asha jest poprawny i użyteczny po tym, jak wiesz, jak to zrobić, ale okropny jako punkt wyjścia.

Powiązane problemy