如何在SEL方法参数上摆脱“PerformSelector可能导致泄漏,因为它的选择器未知”

时间:2016-01-12 17:58:58

标签: ios objective-c compiler-warnings

所以,还有关于如何摆脱这个警告的其他帖子,但似乎没有一个在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
}

0 个答案:

没有答案