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