Ste*_*rns 5 iphone xcode objective-c selector ios
为什么在使用常规方法调用类接口中未声明的方法时会生成警告,但在使用@selector调用方法时却不会?是因为选择器可以由不同的调用者执行吗?
例如:
-(void) doStuff
{
[self doNow]; // Warning: instance method not found
SEL sel = @selector(doNow); // no warnings
}
-(void) doNow {} // this method is not declared in the interface
Run Code Online (Sandbox Code Playgroud)
rbr*_*own 14
默认情况下,"未声明的选择器"警告处于关闭状态.我不知道为什么.您可以在Build Settings中重新打开它.
此设置的文档如下:
如果找到引用未声明选择器的"@selector(...)"表达式,则发出警告.如果在"@selector(...)"表达式之前没有声明具有该名称的方法,则选择器被视为未声明,在@interface或@protocol声明中显式声明,或隐式在@implementation部分中声明.一旦找到"@selector(...)"表达式,此选项始终执行其检查,而-Wselector仅在编译的最后阶段执行其检查.这也强制执行编码样式约定,即在使用之前必须声明方法和选择器.[GCC_WARN_UNDECLARED_SELECTOR,-Wundeclared-selector]
| 归档时间: |
|
| 查看次数: |
3311 次 |
| 最近记录: |