С помощью категории можно разделить класс на несколько пар файлов с расширением .h и .m.

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

Такое разделение классов происходит в самой среде Cocoa. Характерным тому примером служит класс NSString. Он определен как часть каркаса Foundation, а его основные методы объявлены в файле NSString.h. В этом файле находится сам класс NSString без категории, но с двумя методами length и characterAtlndex:, поскольку они считаются тем минимумом, который требуется для того, чтобы строка была символьной. Дополнительные методы для создания символьных строк, их кодирования, разбиения и поиска в них сосредоточены в категориях. Интерфейс для некоторых из этих категорий находится в том же самом файле NSString.h. Однако символьная строка может служить в качестве имени пути к файлу, и поэтому соответствующая категория класса NSString находится в файле NSPathUtilities .h, где объявлены методы для разбиения символьной строки имени класса на составляющие и тому подобных операций. Далее в файле NSURL.h находится еще одна категория класса NSString, в которой объявляются методы для экранирования знаком процента специальных символов в символьных строках URL. И наконец в файле NSStringDrawing.h из совершенно другого каркаса (UIKit) вводятся еще две категории с методами для воспроизведения символьных строк в графическом контексте.

Для программиста такая организация класса NSString не имеет особого значения, поскольку он так и остается классом NSString, независимо от того, каким образом он получает свои методы. Однако она может иметь значение, когда вы обращаетесь за справкой к документации. Методы класса NSString, объявленные в файлах NSString. h, NSPathUtilities. h и NSURL. h, описываются на странице документации на класс NSString, но там отсутствуют методы этого же класса, объявленные в файле NSStringDrawing.h. Это можно объяснить тем, что они происходят из другого каркаса и поэтому описываются в отдельном документе “NSString UIKit Additions Reference” (Справочник дополнений класса NSString из каркаса UIKit). В итоге найти описание методов воспроизведения символьных строк не так-то просто, особенно если учесть, что документация на класс NSString никак не связана с другими документами. Я считаю это главным изъяном в структуре документации о среде Cocoa. На помощь здесь можно призвать стороннюю утилиту вроде АррКШо.


 

 

 

Добавить комментарий