当我们归档对象时,使用archiveRootObject。
归档和取消归档是一项耗时的操作吗?
[NSKeyedArchiver archiveRootObject:xxx toFile:filePath];
在一个帖子中。
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[NSKeyedArchiver archiveRootObject:xxx toFile: filePath]
});
我们什么时候需要使用线程来存档或取消存档?
答案 0 :(得分:2)
archiveRootObject:toFile:
分别做两件事:encodeRootObject和writeToFile。编码受CPU和内存限制。 writeToFile是IO绑定的。
encodeRootObject
可能会很慢。有一些"Performance Considerations" in the docs。
将IO绑定操作(如writeToFile
)移动到后台线程是一种常见做法,因为它通常可以减慢数量级,并且因为它没有保证(它可以减慢速度)取决于各种其他IO活动)。
通常,您应该使用Xcode Instruments Profiler来测量典型工作负载场景中的特定情况,并查看您的策略是否存在需要改进的问题。测量可能会让您感到惊讶,因为性能瓶颈可以在其他一些代码中找到。