views:

61

answers:

2

Hi, Whats the difference between class methods and Instance methods. Why do we need them separately? Can somebody please explain?

Class and Instance Methods

• Instances respond to instance methods

 - (id)init;
 - (float)height;
 - (void)walk;

• Classes respond to class methods

 + (id)alloc;
 + (id)person;
 + (Person *)sharedPerson;

Taimur

+4  A: 

An instance method is only available on an instance of the class, while a class method does not need an instance but is available on the class.

Class Methods are denoted by a + while instance methods are denoted by a - before their return type.

Let's take NSObject for example. NSObject has a class method named + (id)alloc. The alloc method is used to allocate an instance of the class. Obviously alloc must be a class method because if it was an instance method, where would you get the "root" instance from?

On the other hand - (id)init is an instance method because it initializes the state of an instance.

Johannes Rudolph
Good answer, to clarify with an example from the code included in the question. If you asked the class what height it was [Person height] it doesnt have an answer because a person can be any height. But if you ask an instance say [michael height] it can respond because I could have set a height for that specific instance (person).
mbehan
A: 

An example:

Human -> Class You -> Instance

Human could extinguish, you cannot. You could drink a Coke, Human cannot.

Instance method is only applied to individuals,

While Class method is applied to the whole group with the same identifiable features.

It's the difference between one and many, individual and the whole society.

[SomeClass alloc] means a new instance of the class is born just like You are given birth,

init applies to an Instance, like your parents give you a name, feed you and send you to school, so you have skills to live in this society.

shader