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
Instance methods can access class variables and class methods directly. Class methods can access class variables and class methods directly. Class methods cannot access instance variables or instance methods directly—they must use an object reference.
In Ruby, a method provides functionality to an Object. A class method provides functionality to a class itself, while an instance method provides functionality to one instance of a class. We cannot call an instance method on the class itself, and we cannot directly call a class method on an instance.
Instance method are methods which require an object of its class to be created before it can be called. To invoke a instance method, we have to create an Object of the class in which the method is defined.
Static method means which will exist as a single copy for a class. But instance methods exist as multiple copies depending on the number of instances created for that class.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With