このコードでは
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 ベース)