1

nilを期待する関数から戻りたいid。私がブロックを書いているとき、コンパイラはこれについて不平を言います。それで、大丈夫return (id)nil;ですか?nilそれとも、何と何であるかについて何か誤解していidますか?

4

1 に答える 1

4

有効です。nil「すべき」は のタイプですがid(実際にはvoid *何らかの理由でそうです)、 にキャストnilしても完全に安全idです。同様に and にも適用されます0(NULLそれらはすべて だけです0)。0そして、定義された動作 (nop) の結果にメッセージを送信して、すべてがうまくいくようにします。

ブロックでの返品について同じ問題があり、これは回答nilからの引用です :

ブロック リテラルに推論された戻り値の型を使用していますが、そうする必要はありません。

そのエラーを取り除く正しい方法は、ブロック リテラルの戻り値の型を提供することです。

id (^block)(void) = ^id{
    return nil;
};
于 2013-09-13T00:58:34.900 に答える