Метод класса, как следует из названия, ограничен классом. Вы можете вызывать их только с именем определенного класса. Это могут быть нормально выставленные методы класса.
Например
NSArray
+ (id)arrayWithArray:(NSArray *)array;
.
Вы называете это с именем класса NSArray. То, что вы ожидаете, это просто создание объекта типа этого конкретного класса. Это не нуждается в объекте для вызова. Кроме того, это очень простой метод, поэтому лучше сделать его как метод класса.
С другой стороны, метод экземпляра, как следует из названия, очень сильно привязан к экземпляру. Объект - это объект, который инкапсулирует состояние (ivars) и поведение (методы) класса. Это может быть очень специфичным для объекта.
Например
- (NSUInteger)count;
Давайте возьмем NSArray * a и NSArray * b . Если a содержит 5 элементов, тогда как b содержит 4, методы экземпляров, вызываемые для этих экземпляров, будут давать разные результаты. И именно поэтому нам нужно инициализировать экземпляры при вызове метода экземпляра. Они работают над контекстом (или состоянием) объекта, к которому они призваны. Также они не отображаются как методы класса.
Надеюсь, это поможет.