1

我想nil从一个期望得到的函数返回id。当我编写块时,编译器会抱怨这个。那么,可以return (id)nil;吗?还是我对什么nilid是什么有误解?

4

1 回答 1

4

这是有效的。nil“应该”是类型id(实际上是void *出于某种原因),但投射nil到. 是完全安全的id。同样适用于0and NULL(它们都只是0)。并将消息发送到0结果定义的行为(nop),所以一切都很好。

我对块中的返回有同样的问题,这是来自答案nil的引用 :

您正在为块文字使用推断的返回类型,但您不必这样做。

消除该错误的正确方法是为块文字提供返回类型:

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