Konwencja z kategoriami ma zawierać prefiks podczas rozszerzania klas Apple. Na przykład:Jaka jest konwencja dotycząca prefiksowania kategorii za pomocą magicznych słów?
[string XXDataUsingUTF8];
(Tak, to głupi przykład Wystarczy przejść z nim.).
Co jestem mniej jasne jest, co konwencja jest gdy identyfikator zaczyna się od copy
, set
, init
lub new
.
Na przykład:
[request setHTTPBodyWithKeyValues: keyValues];
Jeśli dodać przedrostek moje, to nie następuje to „ustawiaczy początek ustaw” konwencji.
[request XXSetHTTPBodyWithKeyValues: keyValues];
Z drugiej strony, jeśli mogę dodać przedrostek po zbiorze, to już naprawdę prefiks:
[request setXXHTTPBodyWithKeyValues: keyValues];
To nie jest strasznie importować z set
, ale myślę, że staje się bardziej ważne z init
, , itp.
Czy Apple to udokumentowało w dowolnym miejscu? Co jest w powszechnym użyciu?
Nie widziałem żadnych oficjalnych wytycznych na ten temat, ale w interesie nie myli ARC lub statyczny analizator LLVM, lub jakikolwiek inny narzędzia lub ludzie czytający twój kod, wolałbym zachować nienaruszony konwencjonalny prefiks na początku selektora. Osobiście używam podkreślenia w nazwach metod rozszerzenia kategorii, ponieważ "rzeczywiste" metody nigdy nie zawierają jednego, zachowując w ten sposób wyjątkowość "przedrostka". W twoim przykładzie będzie to "setXX_HTTPBodyWithKeyValues:". W metodach nie opartych na konwencjach, które stają się po prostu "XX_myMethodName". – pmdj
Sądzę, że to naprawdę jedyna * praktyczna * odpowiedź, prawda? Dzięki za wskazanie tego, co oczywiste. :) –
Bardzo interesujący punkt! Niektórzy ludzie lubią dodawać swój ciąg "namespace": 'setHTTPBodyWithKeyValues_XX:' który nie jest wcale ładniejszy. –