Search code examples
objective-ccocoanscodinginstancetype

Why does initWithCoder not return instancetype?


It seems that most init methods in Objective-C now tend to return instancetype instead of id. See [UIView initWithFrame:], [UIViewController initWithNibName:bundle:], [NSArray init] and siblings, etc. But initWithCoder uses id. Why is this? Has it just not been updated yet? Or is there a reason it has to be id?


Solution

  • It is not updated yet. You can still code it with instance type.

         - (instancetype)initWithCoder:(NSCoder *)aDecoder {
        self = [super initWithCoder:aDecoder];
        if (self) {
            //...
        }
        return self;
    }