Каково различие между методами класса и Методами экземпляра. Почему нам нужны они отдельно? Кто-то может объяснить?
Методы класса и методы экземпляра
• Экземпляры отвечают на методы экземпляра
- (id)init;
- (float)height;
- (void)walk;
• Классы отвечают на методы класса
+ (id)alloc;
+ (id)person;
+ (Person *)sharedPerson;
Taimur
Метод экземпляра доступен только в экземпляре класса, тогда как методу класса не нужен экземпляр, но он доступен в классе.
Методы класса обозначаются +
, в то время как методы экземпляра обозначаются -
перед их возвращаемым типом.
Возьмем, к примеру, NSObject
. NSObject
имеет метод класса с именем + (id) alloc
. Метод alloc используется для выделения экземпляра класса. Очевидно, что alloc должен быть методом класса, потому что, если бы это был метод экземпляра, откуда бы вы взяли "корневой" экземпляр?
С другой стороны - (id) init
является методом экземпляра, потому что он инициализирует состояние экземпляра.