在objective-c中,如何使错误名称的选择器生成编译时错误?
例如,说我有这个
@selector(some_misnamed_func)
我的班级有这个成员
-(void)some_func
我希望objective-c编译器告诉我它在编译时找不到该函数,而不是仅在运行该代码时生成运行时异常。
答案 0 :(得分:10)
在Xcode的构建设置中使用-Wundeclared-selector
或 Undeclared selector 编译代码。由于这只是一个警告,您可以将其与-Werror
(在Xcode中将将警告视为错误)结合使用,以使该警告(以及所有其他警告)表现为错误并有效中止汇编。
答案 1 :(得分:6)
如果可见文件中没有这样的选择器,编译器可以发出警告。如果你打开警告作为错误,你会得到一个很好的错误。问题在于,如果你把正确的选择器误认为是其他现有的选择器(即使在一个完全不同的类中),编译器也不会说出任何东西。这是由于late binding,编译器无法知道类在运行时将响应的所有消息。