2016-10-17 5 views
2

stieß ich auf die folgende Code-Schnipsel:Was bedeutet^{} in C?

void solve_symbols() { 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
    getClass = dlsym(RTLD_DEFAULT, "objc_getClass"); 
    getClassObj = dlsym(RTLD_DEFAULT, "object_getClass"); 
    registerName = dlsym(RTLD_DEFAULT, "sel_registerName"); 
    respondsToSelector = dlsym(RTLD_DEFAULT, "class_respondsToSelector"); 
    msgSend = dlsym(RTLD_DEFAULT, "objc_msgSend"); 
    }); 
} 

-Code finden Sie hier: GitHub:ParasiteLoader/loader.c

Was ^{ getClass = dlsy... } macht/bedeuten?

+1

finden es Block genannt wird https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithBlocks/WorkingwithBlocks.html –

+4

@KeithNicholas Ich glaube, Block ist eine C-Erweiterung 'Ein neuer abgeleiteter Typ wird eingeführt in C und, durch Erweiterung, Objective-C, C++ und Objective-C++' http://clang.llvm.org/docs/BlockLanguageSpec.html –

+1

Für Leute, die sich mit irrelevanten Titeln und Tags beschäftigt haben, werfen Sie bitte einen Blick auf den Link des OP, bevor Sie dies tun. Vielen Dank. –

Antwort

0

Es heißt Block und es ist Sprache-Level-Zugabe zu C und Obj-C. Es ist eine Funktion, die wie ein Objekt behandelt wird. Das ist die Implementierung von closure Konzept in C. Fügt mehr funktionale Programmierung Geschmack.

Sie können Syntax und Verwendung der Praxis Empfehlungen in diesem article