I've seen some of the example of using NSCoder to archive the things in your application 

```
@interface MyApplicationData : NSObject <NSCoding, NSCopying> {
    NSMutableArray* items;
    NSMutableArray* categories;
}

```

Please see this thread. [How to use NSCoder](https://stackoverflow.com/questions/1701582/how-to-use-nscoder)

Why does this improve the performance of your app? isn't that doing more things in your application? Can anyone tell me why and when you want to use archive? 

EDITED:
Quoted from a book, iOS 5 programming pushing the limit- Under Method for Storing your Cache: "Caching or saving data can be done either by storing it as archives of your data models (using NSKeyedArchiver) or using a higher-level database like raw SQLite or using object serialization framework like Core Data..." "....NSKeyedArchiver is implemented by implementing the NSCoding protocol."

I thought NSCoding or NSCoder can be used for Caching and it will improve performance. So is it not good practice to use it for caching?

Thanks in advance.