gpt4 book ai didi

ios - 执行选择器不会取消第二次

转载 作者:行者123 更新时间:2023-11-28 19:43:57 25 4
gpt4 key购买 nike

在我的应用程序中,我使用执行选择器从服务器更新消息。我在 viewWillAppear 中调用此方法。
示例 UpdateMessagesviewWillAppear 中调用方法并在网络服务响应中设置执行选择器,如下所示。

    -(void)UpdateChatMessage {
/* set some parameters here */
[[UAAPIMaster sharedMaster] getUpdateMessageCall_Completion:params :^(id returnData) {
[self performSelector:@selector(UpdateChatMessage) withObject:nil afterDelay:1.2]; // Call this method again using performSelector
}
}];
}

问题是当我弹出这个 View 时我想停止这个循环。所以我将代码放在 viewWillDisappear 中。

-(void)viewWillDisappear:(BOOL)animated {
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(UpdateChatMessage) object:nil];
[super viewWillDisappear:animated];
}

但它只在第一次工作,第二次我进入此 View 时,选择器工作正常,但它不会停止。它的工作背景。所以请帮我解决这个问题。我想知道为什么会出现这个问题。提前致谢。

最佳答案

根据 Apple Documentation :

Discussion All perform requests are canceled that have the same target as aTarget, argument as anArgument, and selector as aSelector. This method removes perform requests only in the current run loop, not all run loops.

因此,您可能在创建和取消的不同运行循环上运行。

作为旁注,我还希望您通过在 object 参数中传递 self 而不是 nil 来检查:

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(UpdateChatMessage) object:self];

关于ios - 执行选择器不会取消第二次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33229805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com