Методы классов различий и экземпляров

В чем разница между методами класса и методами экземпляра. Зачем они нужны отдельно? Может кто-нибудь объяснить?

Методы класса и экземпляра

• Экземпляры реагируют на методы экземпляра

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

• Классы реагируют на методы класса

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

Таймур


person Taimur Ajmal    schedule 14.07.2010    source источник
comment
возможный дубликат Objective-C: методы класса и экземпляра?   -  person Georg Fritzsche    schedule 24.07.2010


Ответы (3)


Метод экземпляра доступен только в экземпляре класса, тогда как методу класса не нужен экземпляр, но он доступен в классе.

Методы класса обозначаются +, а методы экземпляра обозначаются - перед типом возвращаемого значения.

Возьмем, к примеру, NSObject. NSObject имеет метод класса с именем + (id)alloc. Метод alloc используется для выделения экземпляра класса. Очевидно, что alloc должен быть методом класса, потому что, если бы это был метод экземпляра, откуда бы вы взяли «корневой» экземпляр?

С другой стороны, - (id)init является методом экземпляра, потому что он инициализирует состояние экземпляра.

person Johannes Rudolph    schedule 14.07.2010
comment
Хороший ответ, чтобы уточнить пример из кода, включенного в вопрос. Если вы спросите у класса, какой у него рост [Рост человека], у него не будет ответа, потому что человек может быть любого роста. Но если вы попросите экземпляр сказать [рост Майкла], он может ответить, потому что я мог бы установить рост для этого конкретного экземпляра (человека). - person Michael Behan; 14.07.2010

Пример:

Human -> Class You -> Instance

Human мог extinguish, you не мог. You мог drink a Coke, Human не мог.

Instance метод применяется только к физическим лицам,

В то время как метод Class применяется ко всей группе с одинаковыми идентифицируемыми признаками.

Это разница между одним и многими, индивидуумом и всем обществом.

[SomeClass alloc] означает, что новый экземпляр класса рождается так же, как рождается Вы,

init относится к Instance, например, ваши родители дают вам имя, кормят вас и отправляют в школу, так что у вас есть навыки, чтобы жить в этом обществе.

person shader    schedule 24.07.2010

  1. Используйте статические переменные
  2. Обозначить символом «+»
  3. Может быть вызван непосредственно с классом без создания экземпляра класса
  4. Метод self in class представляет сам класс, однако метод self in instance представляет этот конкретный экземпляр класса.
person atsawant    schedule 05.11.2014