缓存自定义类
在我的应用程序,我与SimpleKML框架缓存自定义类
https://github.com/mapbox/Simple-KML
我有一些大的文件,大约需要5秒来处理这个思想库的工作。我正在考虑缓存对象的东西像NSData。
我从苹果阅读本教程:
但我真的不知道用nscoder的是做到这一点的最好办法。有人能指引我朝着正确的方向吗?
您想使用NSKeyedArchiver
和NSKeyedUnarchiver
。
如果你保存对象(以及它作为属性的对象及其属性等)实现NSCoding
协议那么它的,因为
NSData *savedData = [NSKeyedArchiver archivedDataWithRootObject:someObject];
[savedData writeToFile:pathToSaveFile atomically:YES];
为简单对象归档到NSData然后将其保存到磁盘,然后将其保存到磁盘,然后再将其保存到磁盘,然后再将其保存到磁盘,然后再将其保存到磁盘,然后再将其保存到磁盘,然后再将其保存到磁盘,然后再将其保存到磁盘,然后再将其保存到磁盘,然后再将其保存到磁盘中。
如果不是,则需要覆盖initWithCoder:
和encodeWithCoder:
以查找有问题的对象,以使其正确序列化。
我试过了,并保存该对象的作品。但是,它看起来像没有保存一切。 Nsdata对象的长度是299,非常小。而我不能访问unarchived对象的方法或属性。它没有null cuz当我登录它我看到:
我读了这个,我看起来像即时通讯做的一切正确。 https://developer.apple.com/library/mac/#documentation/cocoa/conceptual/Archiving/Articles/archives.html#//apple_ref/doc/uid/20000946-BAJDBJAI – Melvin 2012-02-12 16:04:01
SimpleKML对象不能实现'NSCoding '协议正确。查看我的更新答案,了解需要完成的工作。可能值得让项目做出修改,然后发送拉请求。 – yuji 2012-02-12 16:44:26
考虑使用NSCache和NSPurgeableData [如本文所述](https://developer.apple.com/library/mac/technotes/CachingPurgeableMemory/CachingPurgeableMemory.pdf)。 – Till 2012-02-12 14:05:28
好吧,我实际上正在寻找一些可以保存在某个地方的文件或文件。它看起来很喜欢nscache无法保存,或者它呢? – Melvin 2012-02-12 14:21:31