Search code examples
objective-coopmethodsclass-methodinstance-methods

What is the difference between class and instance methods?


What's the difference between a class method and an instance method?

Are instance methods the accessors (getters and setters) while class methods are pretty much everything else?


Solution

  • Like most of the other answers have said, instance methods use an instance of a class, whereas a class method can be used with just the class name. In Objective-C they are defined thusly:

    @interface MyClass : NSObject
    
    + (void)aClassMethod;
    - (void)anInstanceMethod;
    
    @end
    

    They could then be used like so:

    [MyClass aClassMethod];
    
    MyClass *object = [[MyClass alloc] init];
    [object anInstanceMethod];
    

    Some real world examples of class methods are the convenience methods on many Foundation classes like NSString's +stringWithFormat: or NSArray's +arrayWithArray:. An instance method would be NSArray's -count method.