gpt4 book ai didi

objective-c - 在Objective-C中定时和重复执行线程

转载 作者:行者123 更新时间:2023-12-01 17:01:48 25 4
gpt4 key购买 nike

我想知道我是否能够计时要重复执行的线程的时间(例如在scheduledTimerWithTimeInterval中使用NSTimer方法时)。我有一个 View Controller ,这里有一个方法我希望它可以手动执行(通过单击按钮),还是自动(通过计时方法执行时间)。问题在于,此方法将与远程服务器连接,并且将更新 View 上的结果,因此我不希望它阻塞主线程( View Controller 线程)。

我不知道该用什么,所以如果有人知道怎么用,请让我知道:)
提前致谢..

最佳答案

听起来您可能正在使用NSURLConnection,如果是这种情况,那么正如joshpaul所指出的,默认情况下它将异步执行。也就是说,当您开始连接时,NSURLConnection对象将创建一个新线程,在该线程上进行工作,然后通过delegate methods在原始线程上返回结果给您,然后清理第二个线程。这意味着在连接工作时,原始线程(无论是否为主线程)都不会被阻塞。然后,您要做的就是创建您的计时器操作并运行连接。

在其他情况下,您有两种选择。设置计时器方法很容易,该方法将在后台调用另一个方法:

- (void)periodicMethodTimerFire:(NSTimer *)tim {
[self performSelectorInBackground:@selector(myPeriodicMethod:)
withObject:myPeriodicArgument];
}

这可能很难从另一个线程获取结果(因为您需要将对原始线程的引用传递给该方法)。但是,由于您似乎是从主线程入手,因此可以使用 performSelectorOnMainThread:withObject:waitUntilDone:传递 NO作为 wait参数来返回。

更为复杂的选项是在其上运行一个计时器来设置自己的后台线程,但是如果真的有必要的话,我会感到惊讶。

关于objective-c - 在Objective-C中定时和重复执行线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5923137/

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