warum der Typ von "nil" nicht "id" ist, sondern "void *"
In diesem Code
id (^block)(void) = ^(void) {
return nil;
};
Ich habe diesen Fehler
Inkompatible Blockzeigertypen, die 'id (^ __ strong) (void)' mit einem Ausdruck vom Typ 'void * (^) (void)' initialisieren
Also muss ich explizit besetzennil
zuid
Art
id (^block)(void) = ^(void) {
return (id)nil;
};
Compiler glücklich machen. Kaufen Sie warumnil
ist nichtid
Art?
Und für diesen Code
__typeof__(nil) dummy;
dummy = [NSObject new];
Die implizite Konvertierung des Objective-C-Zeigertyps 'NSObject *' in den C-Zeigertyp 'typeof (((void *) 0))' (auch bekannt als 'void *') erfordert eine Überbrückung
welches sagtnil
ist(void *)0
, ist aber nicht gleichNULL
? Ich abernil
sollte sein(id)0
undNil
sollte sein(Class)0
?
Ich benutze Xcode 4.6.2
Compiler: Apple LLVM Version 4.2 (clang-425.0.28) (basierend auf LLVM 3.2svn)