Was ist NSComparisonResult
und NSComparator
?
Ich habe eine der Typdefinitionen gesehen, etwa so:
%Vor%Ist es anders als ein Funktionszeiger?
Außerdem kann ich nicht einmal erraten, was das Symbol% co_de% bedeutet.
^
steht für einen Blocktyp , ähnlich wie ein Funktionszeiger.
Dies bedeutet, dass der Typ NSComparator
ein Block ist, der zwei Objekte vom Typ id
namens obj1
und obj2
übernimmt und ein NSComparisonResult
zurückgibt.
Speziell NSComparator
ist in der definiert Referenz der Foundation Datentypen .
Weitere Informationen zu C-Blöcken finden Sie in diesem ADC-Artikel Blockiert Programmierthemen .
Beispiel:
%Vor%Jacobs Antwort ist jedoch gut, um den Teil über "Wie ist das anders als ein Funktionszeiger?" zu beantworten:
1) Ein Block ist nicht ein Funktionszeiger. Blöcke sind Apples Ansatz, um in C / C ++ / Objective-C Funktionen für erstklassige Bürger zu machen. Es ist neu in iOS 4.0.
2) Warum dieses seltsame Konzept einführen? Stellt sich heraus, First-Class-Funktionen sind nützlich in einigen Szenarien, zum Beispiel die Verwaltung von Teilen der Arbeit, die parallel ausgeführt werden können, wie in Grand Central Dispatch. Jenseits von GCD ist die Theorie wichtig genug, dass ganze Softwaresysteme darauf basieren. Lisp war einer der ersten.
3) Sie werden dieses Konzept in vielen anderen Sprachen sehen, aber unter verschiedenen Namen. Zum Beispiel hat Microsoft .Net Lambdas und Delegates (keine Beziehung zu Objective-C-Delegaten), während die allgemeinsten Namen wahrscheinlich anonyme Funktionen sind oder erstklassige Funktionen .
Tags und Links objective-c iphone ios objective-c-blocks function-pointers