gpt4 book ai didi

multithreading - 如何确保 NSOperationQueue 只使用一个线程?

转载 作者:行者123 更新时间:2023-12-03 16:41:47 24 4
gpt4 key购买 nike

ABAddressBookRef 只能由一个线程访问。我认为一个好的模型除了主线程之外,还应该在后台有一个用于 ABAddressBookRef 的线程。

如何确保使用 NSOperationQueue 时只有一个线程?简单地将最大并发设置为 1 并不能保证它在同一线程上运行。

我应该使用其他独特的线程(例如网络线程)吗?

最佳答案

您可以手动创建线程并将所有地址簿访问重定向到该线程。

创建一个线程,内容如下 ( adapted from documentation ):

NSThread* myThread = [[NSThread alloc] initWithTarget:[MyThread new]
selector:@selector(myThreadMainMethod)
object:nil];
[myThread start]; // Actually create the thread

请注意,要使线程有用,您必须在线程的 main 方法中实现运行循环

See example implementation of run loop in this answer .

然后,您可以使用 NSObject 的方法 performSelector:onThread:withObject:waitUntilDone: 在此线程上执行操作。

这是实现此概念的 ABAddressBookRef 的包装库 – RHAddressBook .

关于multithreading - 如何确保 NSOperationQueue 只使用一个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16661338/

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