Метод класса
Метод класса является методом, воздействующим на объекты класса, а не экземпляры класса. В Objective C метод класса обозначен плюс (+) знак в начале объявления метода и реализации:
+ (void)classMethod; |
Для отправки сообщения в класс Вы помещаете имя класса как получатель в выражении сообщения:
[MyClass classMethod]; |
Подклассы
Можно отправить сообщения класса в подклассы класса, объявившего метод. Например, NSArray
объявляет метод класса array
это возвращает новый экземпляр объекта массива. Можно также использовать метод с NSMutableArray
, который является подклассом NSArray
:
NSMutableArray *aMutableArray = [NSMutableArray array]; |
В этом случае новый объект является экземпляром NSMutableArray
, нет NSArray
.
Переменные экземпляра
Методы класса не могут относиться непосредственно к переменным экземпляра. Например, учитывая следующее объявление класса:
@interface MyClass : NSObject { |
NSString *title; |
} |
+ (void)classMethod; |
@end |
Вы не можете обратиться к title
в реализации classMethod
.
сам
В организации метода класса, self
относится к самому объекту класса. Вы могли бы реализовать метод фабрики как это:
+ (id)myClass { |
return [[[self alloc] init] autorelease]; |
} |
В этом методе, self
относится к классу, в который было отправлено сообщение. Если Вы создали подкласс MyClass
:
@interface MySubClass : MyClass { |
} |
@end |
и затем отправленный a myClass
сообщение к подклассу:
id instance = [MySubClass myClass]; |
во время выполнения, в организации myClass
метод, self
относился бы к MySubClass
класс (и таким образом, метод возвратил бы экземпляр подкласса).