Это не имя "личное", которое делает его частным; методы являются частными, потому что они находятся в категории, объявленной в файле реализации.
Существует три варианта использования категории, каждый из которых добавляет методы в класс (примечание: только методы, а не iVars)
Расширение существующего класса какао
Это позволяет вам добавлять свои собственные методы в существующий класс.
Например, если вы хотите расширить NSString для применения специальной заглавной буквы, вы можете создать новый класс с именем, например, NSString + Capitals. в NSString + Capitals.h вы должны иметь:
@interface NSString (Capitals)
-(NSString *)alternateCaps:(NSString *)aString;
@end
и в NSString + Capitals.m вы реализуете метод
@implementation NSString (Capitals)
-(NSString *)alternateCaps:(NSString *)aString
{
// Implementation
}
Частные методы в классе
Это то же самое, что и выше, за исключением того, что дополнительные методы объявляются и определяются в файле реализации (.m). Обычно это способ иметь закрытые методы - потому что их нет в файле .h (который является # импортируется другими классами) их просто не видно. В этом случае реализация методов осуществляется в собственном блоке реализации. * 1019 например *
// someClass.m
@interface someClass (extension)
-(void)extend;
@end
@implementation someClass
// all the methods declared in the .h file and any superclass
// overrides in this block
@end
@implementation someClass (extension)
-(void)extend {
// implement private method here;
}
Расширение класса (Новое для 10,5 леопардов)
Более простой способ иметь приватные методы. В этом особом случае имя категории пустое, а закрытые методы реализованы в том же блоке, что и все другие методы класса.
// someClass.m
@interface someClass ()
-(void)extend;
@end
@implementation someClass
// all the methods declared in the .h file and any superclass
// overrides in this block
// Implement private methods in this block as well.
-(void)extend {
// implement private method here;
}
@end
Вот ссылка на документы Apple по категориям и расширениям.