【发布时间】:2013-11-03 08:32:32
【问题描述】:
我必须在我的应用程序中执行一系列下载和数据库写入操作。我同样使用NSOperation 和NSOperationQueue。
这是应用场景:
- 获取某个地点的所有邮政编码。
- 为每个邮政编码获取所有房屋。
- 为每所房屋获取居民详细信息
如前所述,我为每个任务定义了一个NSOperation。在第一种情况下(Task1),我向服务器发送请求以获取所有邮政编码。 NSOperation 中的委托将接收数据。然后将此数据写入数据库。数据库操作在不同的类中定义。我正在从NSOperation 类调用数据库类中定义的写入函数。
我的问题是数据库写操作是发生在主线程还是后台线程?当我在NSOperation 中调用它时,我期望它在与NSOperation 不同的线程(非主线程)中运行。有人可以在处理NSOperation 和NSOperationQueue 时解释这种情况。
【问题讨论】:
-
如果将操作添加到主队列,那么它们将在主线程中执行。如果您创建自己的 NSOperationQueue 并向其添加操作,那么它们将在此队列的线程中执行。
-
我不认为你会得到比@Cy-4AH 给出的更好的答案,除非你得到更具体/发布一些代码。我会说你总是可以在代码中放置一个断点,当它跳闸时,它会告诉你跟踪所在的线程。
-
“NSOperation 中的委托将接收数据”是什么意思。意思是?
NSOperation和NSOperationQueue都不包含委托属性。 -
你也可以将你的委托调用推送到主线程,而不是对当前线程做任何假设......
标签: ios objective-c multithreading nsoperation nsoperationqueue