このコードでは
id (^block)(void) = ^(void) {
return nil;
};
このエラーがあります
タイプ「void *(^)(void)」の式で「id (^__strong)(void)」を初期化する互換性のないブロック ポインター タイプ
したがって、明示的に型にキャストnil
する必要がありますid
id (^block)(void) = ^(void) {
return (id)nil;
};
コンパイラを幸せにするために。なぜ購入しnil
ないid
タイプですか?
そして、このコードについて
__typeof__(nil) dummy;
dummy = [NSObject new];
Objective-C ポインター型 'NSObject *' から C ポインター型 'typeof (((void *)0))' (別名 'void *') への暗黙的な変換には、ブリッジ キャストが必要です。
と言っているnil
のですが(void *)0
、と同じではありませんNULL
か?私はあるnil
べきで(id)0
あり、Nil
あるべき(Class)0
ですか?
Xcode 4.6.2 を使用しています
コンパイラ: Apple LLVM バージョン 4.2 (clang-425.0.28) (LLVM 3.2svn ベース)