Wenn reine Geschwindigkeit das einzige Problem ist (dh Sie erstellen eine Rendering-Engine, bei der jeder kleine CPU-Zyklus zählt), ist die schnellste Möglichkeit, eines der NSCollection-Objekte (ab iOS 5.0 ~ 6.0) zu durchlaufen verschiedene "enumerateObjectsUsingBlock" Methoden. Ich habe keine Ahnung, warum das ist, aber ich habe es getestet und das scheint der Fall zu sein ...
Ich schrieb kleinen Test erstellen Sammlungen von Hunderttausenden von Objekten, die jeweils eine Methode, die eine einfache Array von Ints summiert . Jede dieser Sammlungen wurde gezwungen, die verschiedenen Arten der Iteration (for-Schleife, schnelle Enumeration, makeObjectsPerformSelector und enumerateObjectsUsingBlock) millionenfach durchzuführen, und in fast allen Fällen gewann die Methode "enumerateObjectsUsingBlock" im Laufe der Tests gut.
Das einzige Mal, wenn dies nicht der Fall war, als Speicher zu füllen begann (wenn ich es mit Millionen begann zu laufen von Objekten), wonach es begann zu „makeObjectsPerformSelector“ zu verlieren.
Es tut mir leid, dass ich keinen Schnappschuss des Codes gemacht habe, aber es ist ein sehr einfacher Test, ich empfehle es sehr, es zu versuchen und selbst zu sehen. :)
Danke für den Link, ich kannte dieses Dokument nicht! Wie Sie sagen, der Abschnitt "Unrolling Loops" besagt eindeutig, dass Cocoa-Entwickler interne Optimierungen mit -makeObjectsPerformSelector vorgenommen haben: – mouviciel
Ich freue mich. Da sind einige interessante Dinge drin. –