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?
James Raitsev
źródło
5
Sprawdź link: cocoasamurai.blogspot.com/2006/09/…
rptwsthi
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
stackoverflow.com/a/36953187/443530
akshay1188 30.04.2016

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

Erre Efe
źródło
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.

dayitv89
źródło
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.

Gracz
źródło
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.

Maxim Chetrusca
źródło
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

Saurabh Hooda
źródło
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

teriiehina
źródło
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 -
Jeba Mojżesz
źródło
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