所以,还有关于如何摆脱这个警告的其他帖子,但似乎没有一个在SEL参数上工作 - 所以这不是重复。
所以,我正在创建一个打印机界面,为了模块化,我创建了一个提供回调的方法,如下所示。
这很好用,我的打印机类似乎不需要了解我的客户端UI类,除了,我得到主题警告“PerformSelector可能导致泄漏,因为它的选择器未知”。
我知道还有其他方法可以获得回调操作(例如委托),但是有没有办法使用这种模式(回调作为方法参数)而不会导致此警告?
谢谢!
*在我的打印机课程中
+(void) SearchPrinters:(id)onfinish_callback_target withSelector: (SEL)onfinish_callback_sel
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// perform the search
dispatch_sync(dispatch_get_main_queue(), ^{
[onfinish_callback_target performSelector:onfinish_callback_sel]; // <-- WARNING HERE
});
});
}
*在我的客户端UI类*
-(void) OnTouch_Search
{
// pushed button, prepare for search and call
[cPrinterInterface SearchPrinters:self withSelector:@selector(SearchCallback)];
}
-(void) SearchCallback
{
// do stuff when done
}