Главная » iPhone, Objective-C, Программирование для iOS и MacOS » Категории Objective-C

0

Категории позволяют программисту добавить новые методы в любой существующий класс. Например, фирма Apple предоставила нам класс NSString. Исходный код этого класса недоступен, но категории дают возможность добавить новые методы в NSString.

Создайте новую программу командной строки Foundation с именем VowelCounter. Затем создайте новый файл, являющийся категорией Objective-C (Objective-C category). Присвойте категории имя VowelCounting и назначьте ее категорией для NSString.

Откройте NSString+VowelCounting.h и объявите метод, который вы хотите добавить в класс NSString:

#import <Foundation/Foundation.h> @interface NSString (VowelCounting)

-­‐     (int)vowelCount;

@end

Реализуйте метод в NSString+ VowelCount.m:

#import "NSString+VowelCounting.h" @implementation NSString (VowelCounting)

-­‐     (int)vowelCount

{

NSCharacterSet *charSet =

[NSCharacterSet characterSetWithCharactersInString:@"aeiouyAEIOUY"];

NSUInteger count = [self length]; int sum = 0;

for (int i = 0; i < count; i++) {

unichar c = [self characterAtIndex:i]; if ([charSet characterIsMember:c]) {

sum++; }

}

return sum; }

@end

Теперь используйте новый метод в main.m:

#import <Foundation/Foundation.h>

#import "NSString+VowelCounting.h"

int main (int argc, const char * argv[])

{

@autorelease {

NSString *string = @"Hello, World!";

NSLog(@"%@ has %d vowels", string, [string vowelCount]);

}

return 0;

}

Постройте и запустите программу. Удобно, не правда ли? Категории чрезвычайно  полезны.

Важно отметить, что категория присутствует только в этой программе. Если вы хотите, чтобы метод был доступен в другой программе. добавьте файл в проект и откомпилируйте категорию при построении программы.

Источник: Аарон Хилегас, «Objective-C. Программирование для iOS и MacOS», 2012 г.

По теме:

  • Комментарии