我想nil
从一个期望得到的函数返回id
。当我编写块时,编译器会抱怨这个。那么,可以return (id)nil;
吗?还是我对什么nil
和id
是什么有误解?
问问题
83 次
1 回答
4
这是有效的。nil
“应该”是类型id
(实际上是void *
出于某种原因),但投射nil
到. 是完全安全的id
。同样适用于0
and NULL
(它们都只是0
)。并将消息发送到0
结果定义的行为(nop),所以一切都很好。
我对块中的返回有同样的问题,这是来自答案nil
的引用
:
您正在为块文字使用推断的返回类型,但您不必这样做。
消除该错误的正确方法是为块文字提供返回类型:
id (^block)(void) = ^id{
return nil;
};
于 2013-09-13T00:58:34.900 回答