防止“ PerformSelect的选择器未知,可能会导致泄漏”的警告

可能重复:
performSelector可能会导致泄漏,因为其选择器未知

我做了一个NSDictionary,将我的输入(NSString)转换为选择器。“选择器映射”如下所示:

[self setCmdSelectorMap:[NSDictionary dictionaryWithObjectsAndKeys: 
                         [NSValue valueWithPointer:@selector(doOpenBrowserByString:)], @"openBrowser",
                         [NSValue valueWithPointer:@selector(syncData:)], @"sync",
                         [NSValue valueWithPointer:@selector(getCachedString:)], @"getCachedString",
                         nil]];

当我尝试获取这些选择器之一并按以下步骤执行它时,会引发警告:

sel = [[_cmdMap objectForKey:command] pointerValue];
NSLog(@"selector determined : %@", NSStringFromSelector(sel));
[self performSelector:sel withObject:arguments];

警告说:PerformSelector可能导致泄漏,因为其选择器未知。有什么方法可以防止发生此警告?还是有任何“更安全”的方式执行这样的动作?

谢谢你们 :)

亚历山大·扎卡诺夫

只需使用此:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[self performSelector:sel withObject:arguments];
#pragma clang diagnostic pop

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章