cancelPreviousPerformRequestsWithTarget在dealloc中不起作用

Fan*_*nic 2 iphone selector dealloc

-(IBAction)voiceBroadcast
{

    if ([audioPlayer isPlaying]) {
        [audioPlayer stop];
        [NSObject cancelPreviousPerformRequestsWithTarget:self];
    }


    else {
        if (nil != audioPlayer) {
            [audioPlayer play];
            audioPlayer.volume = 0.0;
            [self performSelector:@selector(doBgMusicFadeIn)];
            [self performSelector:@selector(doBgMusicFadeDown) withObject:nil afterDelay:3];
            [self performSelector:@selector(startVoiceBroadcast) withObject:nil afterDelay:4];

        }
    }
}

-(void)dealloc
{
    //position
    [NSObject cancelPreviousPerformRequestsWithTarget:self];

    [super dealloc];

}
Run Code Online (Sandbox Code Playgroud)

cancelPreviousPerformRequestsWithTarget:selfdealloc叫,但不工作时,选择仍可以调用.但是,cancelPreviousPerformRequestsWithTarget:selfvoiceBroadcast没有问题.该cancelPreviousPerformRequestsWithTarget方法不能用于dealloc

aka*_*kyy 5

如果您正在使用UIViewController ...

我不知道为什么不执行,但你可以试试

[NSObject cancelPreviousPerformRequestsWithTarget:self];
Run Code Online (Sandbox Code Playgroud)

-viewDidUnload方法中,在dealloc之前调用.

有关UIViewController参考的更多信息

  • -dealloc之前未调用-viewDidUnload.这是许多开发人员做出的错误假设.它仅在低内存情况下调用. (4认同)