我想从期望获得nil
的函数返回id
。当我编写块时,编译器会抱怨这个。那么,return (id)nil;
可以吗?或者我误解了nil
和id
是什么?
答案 0 :(得分:4)
有效。 nil
“应该”是id
的类型(实际上由于某种原因它是void *
)但是将nil
投射到id
是完全安全的。同样适用于0
和NULL
(它们都只是0
)。并将消息发送到0
结果定义的行为(nop),以便一切正常。
我有same problem关于返回nil
的块,这是answer的引用
:
您正在为块文字使用推断的返回类型,但是您 不必。
删除该错误的正确方法是为其提供返回类型 块文字:
id (^block)(void) = ^id{
return nil;
};