Jakie jest znaczenie znaków #pragma? Dlaczego potrzebujemy znaków #pragma?


279

Jaki jest cel #pragmaznaków w Xcode? Czy ich lokalizacja w .mplikach ma znaczenie? Czy niektórzy powinni stawić #pragmasię przed wszystkimi innymi?

  • Czy oni muszą być obecni?
  • Czy można dodawać nowe znaki? Dlaczego mieliby być? Co to powoduje?
  • Czy usunięcie znaku jest szkodliwe? Czy ktoś chciałby kiedykolwiek?


Ja osobiście ich nie lubię. Poważnie, chcesz cały czas myśleć o tym, gdzie musisz zastosować metodę? Są o wiele ważniejsze rzeczy, które należy zachować, np. Zwracanie uwagi na zasadę pojedynczej odpowiedzialności
Brad Thomas,

2
W przypadku szybkiego języka znak #Pragma nie działa. Użyj #MARK lub #FIXME lub #TODO sprawdź ten link, aby uzyskać więcej informacji stackoverflow.com/a/33040068/1753005
Jayprakash Dubey

Odpowiedzi:


315

#pragma markdyrektywy wyświetlają się w Xcode w menu dla bezpośredniego dostępu do metod. Nie mają żadnego wpływu na program.

Na przykład użycie go z Xcode 4 sprawi, że te elementy pojawią się bezpośrednio na pasku skoku.

Jest specjalny, pragma mark -który tworzy linię.

wprowadź opis zdjęcia tutaj


Doceń odpowiedź - czy byłbyś w stanie opublikować zaktualizowaną odpowiedź pokazującą, jak wyglądają znaki pragma (w tym menu lub gdziekolwiek się teraz znajdują) w nowym XCode?
user7804781,

Czy istnieje odpowiednik Pythona?
Edward Falk

@EdwardFalk Jest to specyficzne dla IDE, więc tak naprawdę zależy od twojego IDE / edytora tekstu
Michael Ozeryansky

Mój kompilator GCC dał ostrzeżenie, foo.h: 52: 0: ostrzeżenie: ignorowanie #pragma mark [-Wunknown-pragmas] #pragma mark -, co nie jest fatalne. Więc gcc prawdopodobnie nie wie o „-”.
Kemin Zhou

55

#pragma marksłuży do oznaczania grupy metod, dzięki czemu można łatwo znaleźć i wykryć metody z paska skoku. Może ci to pomóc, gdy pliki kodu osiągną około 1000 wierszy i chcesz szybko znaleźć metody w kategorii z pola Skok.

W długim programie trudno jest zapamiętać i znaleźć nazwę metody. Tak więc znak pragma pozwala kategoryzować metody według wykonywanej pracy. Na przykład otagowałeś tag dla metod protokołu Table View, metod AlertView, metod Init, deklaracji itp.

#pragma markjest narzędziem dla XCode, ale nie ma wpływu na twój kod. Pomaga jedynie w znalezieniu metod podczas kodowania.


21

Jednym słowem możemy powiedzieć, że #pragma mark -jest używany do kategoryzacji metod, dzięki czemu możesz łatwo znaleźć swoje metody. Jest to bardzo przydatne w przypadku długich projektów.


13

Wystarczy dodać informacje, których szukałem: pragma markjest specyficzny dla Xcode, więc jeśli masz do czynienia z projektem C ++, który otwierasz w różnych IDE, nie ma to żadnego wpływu. Na przykład w Qt Creator nie dodaje kategorii dla metod ani nie generuje żadnych ostrzeżeń / błędów.

EDYTOWAĆ

#pragmato dyrektywa preprocesorowa, która pochodzi z języka programowania C. Jego celem jest podanie kompilatorowi informacji zależnych od implementacji - to znaczy, że każdy kompilator może zinterpretować tę dyrektywę według własnego uznania. To powiedziawszy, jest raczej uważane za rozszerzenie, które nie zmienia / nie wpływa na sam kod. Tak więc kompilatory mogą go zignorować.

Xcode to IDE, które wykorzystuje je #pragmai wykorzystuje na swój własny sposób. Chodzi o to, że #pragmanie jest to Xcode, a nawet cel C.


11

Kiedy mamy dużą / długą klasę, powiedzmy, że więcej niż kilka 100 wierszy kodu nie widzimy wszystkiego na ekranie Monitora, dlatego nie możemy zobaczyć przeglądu (zwanego również dokumentem) naszej klasy. Czasami chcemy zobaczyć przegląd naszej klasy; wszystkie metody, stałe, właściwości itp. na pierwszy rzut oka. Możesz nacisnąć Ctrl + 6 w XCode, aby zobaczyć przegląd swojej klasy. Otrzymasz wyskakujący rodzaj okna, zwany także paskiem skoku.

Domyślnie ten pasek skoku nie ma żadnych segmentów / segmentów. To tylko jedna długa lista. (Chociaż możemy po prostu zacząć pisać, gdy pojawi się pasek skoku i będzie on wyszukiwał elementy paska skoku). Oto potrzebapragma mark

Jeśli chcesz utworzyć sekcje na pasku skoku, możesz użyć znaków pragma z odpowiednim opisem. Teraz zapoznaj się z załączoną migawką. Istnieje „Wyświetl cykl życia” i „Sekcja poświęcona ..” to sekcje utworzone przez pragma marks


10

Podczas szukania dokumentu wskazującego na to, w jaki sposób pragma jest wytycznymi dla kompilatora, znalazłem ten artykuł NSHipster , który całkiem nieźle sobie radzi.

Mam nadzieję, że spodoba ci się czytanie


7
#pragma mark - NSSecureCoding

Głównym celem „pragmy” jest odwołanie programisty.wprowadź opis zdjęcia tutaj

Możesz łatwo znaleźć metodę / funkcję w ogromnych tysiącach linii kodujących.

Xcode 11+:

Linia znaczników u góry

// MARK: - Properties

Linia znaczników w górnej i dolnej części

// MARK: - Properties - 

Linia znaczników tylko na dole

// MARK: Properties -

Więc mogę usunąć linię? to strata miejsca dla mojego mózgu.

1
Usunięcie znaku # pragma nie wpłynie na żadną funkcjonalność kodu, ale kod może utracić jego czytelność. Jeśli naprawdę nie chcesz, możesz go usunąć.
Jeba Moses
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.