Ответ 1
Вообще говоря, вы должны создавать методы экземпляра, когда вам нужен код, который работает с определенным экземпляром объекта. Вы создаете метод класса, когда вам нужно делать что-то, что связано с этим классом вообще, но, вероятно, не работает с какими-либо конкретными объектами этого класса.
На практике вы обнаружите, что почти все ваши методы должны быть методами экземпляра. Просто взгляните на любой существующий класс Objective-C типа NSString
, NSArray
, UIView
и т.д., И вы увидите, что подавляющее большинство их методов являются методами экземпляра. Наиболее распространенное использование методов класса (опять же, посмотрите на классы, о которых я упоминал) предназначены для конструкторов удобства, которые возвращают объекты autorelease
или одноэлементные аксессоры.
Рассмотрим метод length
в NSString
. Почему это метод экземпляра, а не метод класса? Это метод экземпляра, потому что имеет смысл спросить конкретный экземпляр NSString
, какова его длина. Задавать NSString
вообще для длины (т.е. Если длина была методом класса) не имеет никакого смысла.
С другой стороны, скажем, что мы хотим добавить метод к NSNumber
, который вернет максимальное целочисленное значение, которое может быть сохранено в данной системе. В этом случае это должен быть метод класса, потому что мы просто задаем общий вопрос о NSNumber
, который не зависит от какого-либо конкретного экземпляра.