Bla*_*zer 10 objective-c compiler-warnings ios performselector
我收到了警告
PerformSelector可能导致泄漏,因为其选择器未知
在代码中:
- (void) callDelegate: (SEL) selector withArg: (id) arg error: (NSError*) err
{
assert([NSThread isMainThread]);
if([delegate respondsToSelector: selector])
{
if(arg != NULL)
{
//this line the warning
[delegate performSelector: selector
withObject: arg
withObject: err];
}
else
{
//this line the warning
[delegate performSelector: selector
withObject: err];
}
}
else
{
NSLog(@"Missed Method");
}
}
Run Code Online (Sandbox Code Playgroud)
标题:
@interface Topscore : UIViewController <NSObject> {
//
}
Run Code Online (Sandbox Code Playgroud)
ott*_*t-- 43
你if ... respondsToSelector: selector
不会工作,因为你selector
只是方法的名称.对于您的情况,您需要检查
if ([delegate respondsToSelector: @selector(method::)]
Run Code Online (Sandbox Code Playgroud)
而另一种情况只是为了method:
.
无论如何,你可以像这样压制警告:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[self performSelector:nextView];
#pragma clang diagnostic pop
Run Code Online (Sandbox Code Playgroud)
小智 4
这是编译器生成的警告,因为在编译时使用了 -Wundeclared-selector 并且启用了自动引用计数 (ARC)。一般来说,可以安全地忽略这一点,因为很明显,名为“selector”的变量中的选择器在编译时是未知的,因为它将在运行时分配其值。
归档时间: |
|
查看次数: |
13627 次 |
最近记录: |