[英]NSKeyedArchiver thread safe?
我是否需要擔心在后台線程中使用archiveRootObject
和unarchiveObjectWithFile
?
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.