过去,当我不得不在 Snow Leopard(或任何较旧的 Mac OS X)上编译某些东西并使用 Lion 及更高版本上可用的一些 @selector 时,我做了这样的事情:
if([foo respondsToSelector:@selector(awesomeLionSelector)]) {
[foo awesomeLionSelector]
}
这效果很好。所以,现在我正在尝试对一个返回浮点数的新方法做同样的事情,但是下面的行:
float f = [foo awesomeLionSelectorWhichReturnsFloat];
引发编译错误:“无法在赋值中将 'objc_object*' 转换为 'float'”。这是因为编译器不知道该方法并且必须假定返回类型为“id”。
解决此问题的正确方法是什么?