使名称错误的选择器生成编译时错误

时间:2011-06-24 04:08:07

标签: objective-c

在objective-c中,如何使错误名称的选择器生成编译时错误?

例如,说我有这个

 @selector(some_misnamed_func)

我的班级有这个成员

  -(void)some_func

我希望objective-c编译器告诉我它在编译时找不到该函数,而不是仅在运行该代码时生成运行时异常。

2 个答案:

答案 0 :(得分:10)

在Xcode的构建设置中使用-Wundeclared-selector Undeclared selector 编译代码。由于这只是一个警告,您可以将其与-Werror(在Xcode中将将警告视为错误)结合使用,以使该警告(以及所有其他警告)表现为错误并有效中止汇编。

答案 1 :(得分:6)

如果可见文件中没有这样的选择器,编译器可以发出警告。如果你打开警告作为错误,你会得到一个很好的错误。问题在于,如果你把正确的选择器误认为是其他现有的选择器(即使在一个完全不同的类中),编译器也不会说出任何东西。这是由于late binding,编译器无法知道类在运行时将响应的所有消息。