NSComparisonResult und NSComparator - was sind sie?

7

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.

    
wh1t3cat1k 07.11.2010, 15:07
quelle

3 Antworten

22

^ steht für einen Blocktyp , ähnlich wie ein Funktionszeiger.

%Vor%

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%     
Jacob Relkin 07.11.2010, 15:10
quelle
7

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 .

    
Lee 15.04.2011 14:53
quelle
-1
%Vor%     
iAS 15.01.2016 10:57
quelle