Какое соглашение для префиксов категорий с волшебными словами? - PullRequest
7 голосов
/ 03 марта 2012

Соглашение с категориями должно включать префикс при расширении классов Apple. Например:

[string XXDataUsingUTF8];

(Да, это глупый пример. Просто иди с ним.)

Что мне менее понятно, так это соглашение, когда идентификатор начинается с copy, set, init или new.

Например:

[request setHTTPBodyWithKeyValues: keyValues];

Если я добавлю свой префикс, он больше не будет следовать соглашению «сеттеры начинаются с набора».

[request XXSetHTTPBodyWithKeyValues: keyValues];

С другой стороны, если я добавлю префикс после набора, он больше не будет префиксом:

[request setXXHTTPBodyWithKeyValues: keyValues];

Это не слишком важно для set, но я думаю, что оно становится более важным для init, copy и т. Д.

Apple документировала это где-нибудь? Что общего в использовании?

1 Ответ

11 голосов
/ 03 марта 2012

Вы можете явно указать семейство методов в объявлении интерфейса:

@interface NSObject (StevenFisherCategory)

- (NSData *)XXCopyDataUsingUTF8 __attribute__((objc_method_family(copy)));

@end
...