簡體   English   中英

NSPrivateQueueConcurrencyType上下文只能在performBlock內運行嗎?

[英]NSPrivateQueueConcurrencyType context can only operate within performBlock?

我想知道NSPrivateQueueConcurrencyType上下文是否僅在-performBlock和-performBlockAndWait中運行。 和NSManagedObject從NSPrivateQueueConcurrencyType上下文返回不能在performBlock外部訪問?

我從蘋果文檔“ iOS 5.0的新增功能”中發現以下句子

將消息發送到使用隊列關聯創建的上下文時,如果您的代碼尚未在該隊列上執行(對於主隊列類型)或在performBlock ...調用范圍內,則必須使用performBlock:或performBlockAndWait:方法。 (對於專用隊列類型)。 在傳遞給這些方法的塊中,您可以自由使用NSManagedObjectContext的方法。

如果是這樣,為什么MagicalRecord和XMPPFramework不操作塊中的上下文和NSManagedObject?

我不知道MagicalRecord和XMPPFramework中的代碼做什么或不做什么。 您需要通過他們的正常支持方式與他們聯系。

但是,我可以告訴您,如果使用NSPrivateQueueConcurrencyType創建MOC,那么訪問該MOC或該MOC擁有的受管對象的唯一方法就是通過performBlock * API。

如果使用NSMainQueueConcurrencyType創建MOC,則可以在主線程中運行它,也可以通過performBlock * API訪問它。

如果使用NSConfinementConcurrencyType創建MOC,則必須僅從創建MOC的線程訪問MOC。 如果未指定並發,則將限制作為默認值。

這些是創建MOC的當前唯一方法,以及使用規則的摘要。

我相信MagicalRecord使用限制並在每個線程中保留MOC,但是我從未使用過它,並且只查看了較舊版本的代碼庫,因此隨着嵌套上下文的出現它可能會發生很大變化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM