How to inherit from NSDictionary?
objective-c
Solution
NSDictionary is a class cluster. This means that the value returned from its init methods is not strictly an NSDictionary, but a subclass that implements the actual functionality. In almost every case, it is better to give your class an NSDictionary as an instance variable or to simply define a category on NSDictionary.
Problem
I have an object called Settings that inherits from `NSMutableDictionary`. When I try to initialize this object using ``` Settings *settings = [[Settings alloc] initWithContentsOfFile: @"someFile"] ``` it returns an object of type `NSCFDictionary`. As a result, it doesn't recognize my additional methods. For example, when I call the selector "save", it objects: ``` [NSCFDictionary save]: unrecognized selector sent to instance 0x524bc0 ``` Of course, it's OK when I initialize using the garden variety ``` Settings *settings = [[Settings alloc] init] ``` I tried to cast it again to Settings but that didn't work. This seems really simple - what am I missing? Thanks