以防止“PerformSelect可能导致泄漏,因为其select器是未知的”警告
可能重复:
performSelector可能会导致泄漏,因为它的select器是未知的
我做了一个NSDictionary将我的input(NSString)转换为select器。 “select器映射”如下所示:
[self setCmdSelectorMap:[NSDictionary dictionaryWithObjectsAndKeys: [NSValue valueWithPointer:@selector(doOpenBrowserByString:)], @"openBrowser", [NSValue valueWithPointer:@selector(syncData:)], @"sync", [NSValue valueWithPointer:@selector(getCachedString:)], @"getCachedString", nil]];
当我尝试获取这些select器中的一个并按照如下执行时,会引起警告:
sel = [[_cmdMap objectForKey:command] pointerValue]; NSLog(@"selector determined : %@", NSStringFromSelector(sel)); [self performSelector:sel withObject:arguments];
警告说:执行select器可能会导致泄漏,因为它的select器是未知的。 有什么办法可以防止这个警告的发生? 还是有什么“安全”的方式来执行这样的行动?
多谢你们 :)
只需使用这个:
#pragma clang diagnostic push #pragma clang diagnostic ignored "-Warc-performSelector-leaks" [self performSelector:sel withObject:arguments]; #pragma clang diagnostic pop