W celu C mogę używać #pragma mark
do zaznaczania części mojego kodu w nawigatorze symboli. Ponieważ jest to polecenie preprocesora języka C, nie jest ono dostępne w Swift. Czy w Swift jest na to jakieś rozwiązanie, czy też muszę używać brzydkich komentarzy?
swift
documentation
Arbitraż
źródło
źródło
Odpowiedzi:
Możesz użyć
// MARK:
Dyskutowano również, że swobodne stosowanie rozszerzeń klas może być lepszą praktyką. Ponieważ rozszerzenia mogą implementować protokoły, możesz np. Umieścić wszystkie metody delegowania widoku tabeli w rozszerzeniu i pogrupować kod na poziomie bardziej semantycznym niż
#pragma mark
jest to możliwe.źródło
// MARK:
,// TODO:
a// FIXME
w źródle Swift i wyświetla je w barze skoku. (BTW, już to zrobiłem w źródle (Obj) C -#pragma mark
to nie jedyny sposób.) I tak, nadal możesz dodać-
do swojego,MARK
aby wstawić separatory w menu.MARK
pracy teraz używanie rozszerzeń do grupowania niektórych rodzajów kodu semantycznego (szczególnie implementacji protokołu) może być nadal przydatne. IMHO znacznie lepiej odczytuje deklarację zgodności protokołu tuż obok metod, które ją implementują, a nie 5 deklaracji protokołu na górze pliku i 50 implementacji powiązanych metod losowo rozrzuconych gdzieś poniżej.#pragma mark
.// MARK: -
jest tylko separatorem,// MARK: - stuff
daje separator i nagłówek oraz// MARK: - stuff -
daje separator, nagłówek i inny separator w jednym wierszu komentarza.Do Xcode 5
#pragma mark
istniała dyrektywa preprocesora .Od Xcode 6 musisz korzystać
// MARK:
Te funkcje preprocesora pozwalają wprowadzić pewną strukturę do pola rozwijanego funkcji edytora kodu źródłowego.
kilka przykładów :
-> będzie poprzedzony dzielnikiem poziomym
-> umieszcza „Twój tekst idzie tutaj” pogrubioną czcionką na liście rozwijanej
-> umieszcza „Twój tekst idzie tutaj” pogrubioną czcionką na liście rozwijanej, poprzedzoną poziomym dzielnikiem
aktualizacja: dodano zrzut ekranu, ponieważ niektóre osoby nadal wydają się mieć z tym problemy:
źródło
// MARK: - text
a rozwijana lista pokazuje MARK: tekst zamiast tylko tekstu .Dla tych, którzy są zainteresowani użyciem rozszerzeń kontra znaczniki pragma (jak wspomniano w pierwszym komentarzu), oto jak zaimplementować je od inżyniera Swift:
To niekoniecznie najlepsza praktyka, ale tak to robisz, jeśli chcesz.
źródło
typealias
. Na przykładtypealias DataSource = SwiftTableViewController
. Następnieextension Datasource {}
UITableViewController
to nie protokół, to klasa. Prawdopodobnie masz na myśliUITableViewControllerDataSource
, ale nie jest to wzorzec użyty w tym przykładzie.extension
nagłówek nie ma protokołu, na przykładextension SwiftTableViewController : UITableViewController
bardziej zrozumiałe byłoby, dlaczego dodałeś to rozszerzenie do klasy.extension SwiftTableViewController : UITableViewDelegate { .. }
aextension SwiftTableViewController : UITableViewDatasource { .. }
Pragma mark - [SOME TEXT HERE]
został użyty w celu C do zgrupowania kilku funkcji razem poprzez rozdzielenie linii.W Swift możesz to osiągnąć za pomocą
MARK, TODO OR FIXME
ja. ZNAK :
//MARK: viewDidLoad
Spowoduje to utworzenie poziomej linii z funkcjami zgrupowanymi pod viewDidLoad (pokazane na zrzucie ekranu 1)
ii. DO ZROBIENIA :
//TODO: - viewDidLoad
Spowoduje to zgrupowanie funkcji w ramach TODO: - kategoria viewDidLoad (pokazana na zrzucie ekranu 2)
iii. NAPRAW MNIE :
//FIXME - viewDidLoad
Spowoduje to zgrupowanie funkcji w ramach FIXME: - kategoria viewDidLoad (pokazana na zrzucie ekranu 3)
Sprawdź szczegóły w dokumentacji Apple .
źródło
Oficjalna dokumentacja
Oficjalny dokument Apple dotyczący paska skoku Xcode: dodaj adnotacje do kodu paska skoku
Zrzuty ekranowe paska skoku dla przykładowego kodu
Zachowanie w Xcode 10.1 i macOS 10.14.3 (Mojave)
Zachowanie w Xcode 10.0 i macOS 10.13.4 (High Sierra)
Zachowanie w Xcode 9.4.1 i macOS 10.13.0
Dyskusja
!!!:
i???:
czasami nie mogą być wyświetlane.źródło
W kodzie Objective-C Xcode wykrywa komentarze takie,
// MARK: - foo
które są nieco bardziej przenośne niż#pragma
. Ale te też nie wydają się być (jeszcze?) Odebrane.Edycja: Naprawiono w Xcode 6 beta 4.
źródło
// MARK: -
w tej chwili nie działa.// MARK:
wydaje się, że nie działa. Próbowałem z i bez spacji, z dwukropkiem i bez, all-caps i mix (Mark). Czy jest jakiś podstęp? Czy muszę aktywować pref czy coś?Myślę, że
Extensions
jest lepszy sposób niż#pragma mark
.Kod przed użyciem
Extensions
:Kod po użyciu
Extensions
:źródło
extension
sam ten tak naprawdę nie wyróżnia się w menu rozwijanym kontroli okruszków Xcode.Xcode 8 obsługuje teraz go w następujący sposób i pokazuje się tak w menu rozwijanym metody:
źródło
// ARK:
dla mnie w Xcode 8!!!
I???
składnia nie wydaje się działać na Xcode 8.3.3 ...Potwierdzony dziś rano przez inżyniera Apple w laboratorium Swift w WWDC, że obecnie nie ma #pragmy lub jej odpowiednika, uważają to za błąd i niedługo nadejdzie, więc mam nadzieję, że beta 2.
W każdym razie jest już w drodze.
Xcode obsługuje teraz punkty orientacyjne // MARK :, // TODO: i // FIXME, aby opisywać kod i wyświetlać je na pasku skoku
źródło
Istnieją trzy opcje do dodania
#pragma_mark
w Swift:1)
// MARK: - your text here -
2)
// TODO: - your text here -
3)
// FIXME: - your text here -
Uwaga: Zastosowania
-
do dodawania separatorówźródło
Posługiwać się
lub
To da linię powyżej znaku pragma, dzięki czemu będzie bardziej czytelna.
Dla ułatwienia wystarczy dodać
do fragmentów kodu.
Alternatywny sposób -
Użyj tego w ten sposób
To nie tylko doda znak (podobnie jak znak pragma), ale także ładnie segreguje kod.
źródło
//MARK
format (bez spacji) i sugeruje// MARK: (text)
( jedna spacja między//
i MARK, brak spacji międzyMARK
i:
oraz jedna spacja między:
nazwą sekcji)Dodaj linię między dwukropkiem a opisem, aby wstawić linię separatora. Pomaga to jeszcze bardziej uporządkować kod. Powyższy kod i zrzut ekranu wykorzystują komentarz MARK z dołączoną linią.
Działa to tylko z komentarzem MARK.
źródło
Możesz być także zainteresowany dyrektywami kompilatora Swift 4.2 / XCode 10, takimi jak
i
Może to być przydatne, gdy naprawdę nie chcesz czegoś przegapić.
źródło
Profesjonalny programista musi używać tego znacznika, aby uzyskać dobry kod. Jest również dobry do pracy zespołowej.
Łatwo jest znaleźć taką metodę
źródło
W Xcode 11 dodali minimapę, którą można aktywować
Editor -> Minimap
.Minimapa pokaże każdy znak tekstu w celu szybkiej orientacji w kodzie. Każdy znak jest napisany jak
// MARK: Variables
źródło
//MARK:
nie wydaje mi się działać w Xcode 6.3.2. Jednak tak zrobiłem , aby działało :1) Kod:
2) W
jump bar
nic nie wydaje się zmieniać podczas dodawania//MARK
: komentarza. Jeśli jednak kliknę prawą nazwę na pasku skoku, w moim przypadku jest to napisaneMainWindowController(with a leading C icon)
, pojawi się wyskakujące okienko pokazujące efekty komentarza // MARK: komentarz, a mianowicie nagłówek z napisem „Moje fajne metody”:3) Zauważam również, że jeśli kliknę jedną z metod w moim kodzie, metoda ta stanie się pozycją umieszczoną najbardziej na prawo na pasku skoku. Aby uzyskać
MainWindowController(with a leading C icon)
pozycję najbardziej na prawo na pasku skoku, muszę kliknąć biały znak nad moimi metodami.źródło
Apple stwierdza w najnowszej wersji Building Cocoa Apps ,
Wygląda na to, że znak # wciąż działa z różnymi konfiguracjami kompilacji i podobnymi rzeczami, ale wygląda na to, że starają się zmniejszyć potrzebę większości przygotowań wstępnych w stylu pragmy i przekazać ci inne funkcje językowe. Być może ma to pomóc w działaniu Playgrounds, a REPL zachowuje się jak najbliżej w pełni skompilowanego kodu.
źródło
źródło
Spróbuj tego:
źródło
Znak Pragma to sposób na poprawę czytelności kodu. Komentarze pragma wyglądałyby jak tagi na pasku skoku Xcode.
Przykład: w kodzie
Tak to wyglądałoby na pasku skoku Xcode.
źródło