我收到警告
PerformSelector may cause a leak because its selector is unknown
在代码中:
- (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");
}
}
标题:
@interface Topscore : UIViewController <NSObject> {
//
}
最佳答案
您的 if ... respondsToSelector: selector
将不起作用,因为您的 selector
只是方法的名称。对于您的情况,您需要检查
if ([delegate respondsToSelector: @selector(method::)]
另一种情况仅适用于方法:
。
无论如何,你可以像这样抑制警告:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[self performSelector:nextView];
#pragma clang diagnostic pop
关于ios - 执行选择器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8773226/