ПРОГРАММИРОВАНИЕ ПОД IPHONE, IPAD OBJECTIVE-C Часть 1

Категории

Одной из наиболее полезных возможностей в Objective-C является категории. По сути, категории позволяют добавлять методы к существующим класса без наследования и без знаний каких-либо подробности того, как класс реализован. Особенно полезно то, что вы можете добавить свои собственные методы для встроенных объектов. Если вы хотите добавить метод для всех экземпляров объектаNSString в вашем приложении, просто добавьте категорию. Это намного проще, чем наследовать и создавать подкласс от NSString.

К примеру нам понадобилось каждую строку проверять является ли она корректно составленным URL-адресом. Реализация интерфейса будет выглядеть следующим образом:

<code data-result="[object Object]">@interface NSString (Utilities) 

- (BOOL) isURL;

@end</code>

Это очень похоже на объявление класса. Разница в том, что отсутсвует указание родительского класса, а в скобках указано имя категории, которое вы можете выбрать абсолютно произвольно.

Ниже пример простенькой реализации:

<code data-result="[object Object]">@implementation NSString (Utilities)

— (BOOL) isURL {
    if ([self hasPrefix:@"http://"]) {
        return YES;
    } else {
        return NO;
    }
}

@end</code>

Теперь вы можете использовать метод isURL в любых объектах NSString. Давайте посмотрим как это будет работать.

<code data-result="[object Object]">NSString* string1 = @"http://apple.com/"; 
NSString* string2 = @"Apple";
if ([string1 isURL]) {
    NSLog (@"string1 это URL");  
}
if ([string2 isURL]) {
    NSLog (@"string2 это URL"); 
}</code>

В отличие от наследования, категории не могут добавлять новые переменные в класс. Однако, вы можете переопределять существующие методы в классе, но должны быть очень осторожны.

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

Более подробно с работой категорий вы можете ознакомиться на примере Хеширование.

Comments are closed.