【发布时间】:2013-12-01 19:18:15
【问题描述】:
我的类中有一个方法接收@selector 和一个对象(id),并且该特定方法返回一个id(这是我对对象执行@selector 后的返回值我收到了)。
所以,这就是我的方法的return 的内容(这只有一行,我为每种原始类型都有一行:int、short、long 等...):
return [NSNumber numberWithChar:[obj performSelector:sel]];
Xcode 给了我这个警告,这是一个非常好的观点:
指向整数转换的不兼容指针将“id”发送到参数 'char'类型的
但是,问题是,在我执行上面的return 和根据NSNumber 的-numberWith... 之前,我确保[obj performSelector:sel] 返回的值的类型是正确的,所以我想要隐藏 Xcode 的警告,因为它对我没有任何帮助。
我已经尝试[NSNumber numberWithChar:[[obj performSelector:sel] charValue]] 来解决警告(这使警告消失了)但是我的程序现在崩溃了,新的charValue。
关于如何隐藏错误(无论是什么类型)或如何修复它的任何想法?
谢谢!
【问题讨论】:
-
正如您在上一个问题中提到的,
performSelector:不能用于获取原始返回类型。您不应该关闭警告。假设选择器命名的方法返回char,您的修复是正确的。为什么会崩溃? -
你调用的选择器的实际返回类型是什么?
-
请注意,您在此处获得的建议与您在上一个问题 How to call an objects method from a selector from a string and get the retur? 中获得的建议相同
标签: objective-c xcode macos warnings primitive-types