簡體   English   中英

NSKeyedArchiver線程安全嗎?

[英]NSKeyedArchiver thread safe?

我是否需要擔心在后台線程中使用archiveRootObjectunarchiveObjectWithFile

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    [NSKeyedArchiver archiveRootObject:myArray toFile:file];
});

你應該非常小心。 archiveRootObject不是原子操作。 例如,如果在后台線程上調用archiveRootObject而另一個線程更改了正在存檔的對象的狀態,則最終可能會歸檔該對象的非法狀態。 當然,這在很大程度上取決於您的應用程序以及如何為對象實現歸檔/取消歸檔例程。

但是,如果您可以確保在歸檔后台線程正在進行時對象不會更改其狀態,則應該可以安全地執行此操作。

作為一個同步調用,所以如果你要保存大量數據並且不想阻止UI,那么你應該考慮后台線程。

否則,如果您的要求是在完成時顯示某些狀態/檢查/操作,那么您不需要線程。

最后,這完全取決於您的應用程序要求。

點擊鏈接查看更多內容

暫無
暫無

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

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