# pragma mark in Swift?
W celu C, mogę użyć #pragma mark
do oznaczania sekcji mojego kodu w nawigatorze symboli. Ponieważ jest to polecenie preprocesora C, nie jest dostępne w języku Swift. Czy jest jakiś stand-in w Swift, czy muszę używać brzydkich komentarzy?
16 answers
Możesz użyć // MARK:
Dyskutowano również, że liberalne Używanie rozszerzeń klas i tak 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ć swój kod na bardziej semantycznym poziomie niż jest w stanie #pragma mark
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-19 05:20:56
Dla tych, którzy są zainteresowani używaniem rozszerzeń vs znaków pragma (jak wspomniano w pierwszym komentarzu), oto jak zaimplementować go z inżyniera Swift:
import UIKit
class SwiftTableViewController: UITableViewController {
init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
extension SwiftTableViewController {
override func numberOfSectionsInTableView(tableView: UITableView?) -> Int {
return 1
}
override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int {
return 5
}
override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? {
let cell = tableView?.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as UITableViewCell;
cell.textLabel.text = "Hello World"
return cell
}
}
To też niekoniecznie najlepsza praktyka, ale tak to robisz, jeśli chcesz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-05 20:00:13
Do Xcode 5 istniała dyrektywa preprocesora #pragma mark
.
Od Xcode 6, musisz użyć // MARK:
Te funkcje preprocesora pozwalają na wprowadzenie pewnej struktury do rozwijanej listy funkcji edytora kodu źródłowego.
Niektóre przykłady:
// MARK:
- > będzie poprzedzony poziomym dzielnikiem
// MARK: your text goes here
- > umieszcza "twój tekst idzie tutaj" pogrubioną czcionką na rozwijanej liście
// MARK: - your text goes here
- > umieszcza "twój tekst idzie tutaj" pogrubioną czcionką na rozwijanej liście, poprzedzoną dzielnik poziomy
Aktualizacja: Dodano zrzut ekranu, ponieważ niektórzy nadal wydają się mieć z tym problemy:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-13 16:40:34
Pragma mark - [SOME TEXT HERE]
została użyta w Objective-C do grupowania kilku funkcji razem przez oddzielenie linii.
W Swift możesz to osiągnąć za pomocą MARK, TODO OR FIXME
I. MARK : //MARK: viewDidLoad
Spowoduje to utworzenie poziomej linii {[7] } Z FUNKCJAMI zgrupowanymi pod viewDidLoad (pokazanymi na zrzucie ekranu 1)
II. TODO : //TODO: - viewDidLoad
Będzie to grupa funkcji w TODO: - viewDidLoad Kategoria (pokazana na zrzucie ekranu 2)
Iii. FIXME : //FIXME - viewDidLoad
Będzie to grupa funkcji w FIXME: - viewDidLoad Kategoria (pokazana na zrzucie ekranu 3)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-09 13:52:59
W kodzie Objective-C Xcode wykrywa komentarze w stylu // MARK: - foo
, który jest nieco bardziej przenośny niż #pragma
. Ale te też chyba nie zostały odebrane (jeszcze?).
Edit: Naprawiono w Xcode 6 beta 4.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-22 00:17:00
Myślę Extensions
jest lepszym sposobem zamiast #pragma mark
.
Kod przed użyciem Extensions
:
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
...
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
...
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
...
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
...
}
}
Kod po użyciu Extensions
:
class ViewController: UIViewController {
...
}
extension ViewController: UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
...
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
...
}
}
extension ViewController: UICollectionViewDelegate {
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
...
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-19 06:34:13
Xcode 8 Teraz obsługuje go w następujący sposób i pojawia się w następujący sposób w rozwijanej metodzie:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-17 00:25:35
Potwierdzili z inżynierem Apple w laboratorium Swift dziś rano w WWDC, że obecnie nie ma żadnych # pragma lub równoważne w tej chwili, uważają to za błąd, i to pojawi się wkrótce, więc zgaduję beta 2, mam nadzieję.
W każdym razie, jest już w drodze.
Xcode obsługuje teraz / / MARK:, / / TODO: i / / FIXME do adnotacji kodu i wyświetla je na pasku skoku
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-21 21:55:32
Dokumentacja
Oficjalny dokument Apple o pasku Skoku Xcode: Dodaj adnotacje o kodzie do paska skoku
Zapowiedzi
Code-Swift 4.2
Jump Bar-Xcode 10.0
Uwaga
!!!:
i???:
wydają się nie być już obsługiwane jak w Xcode 9.4.1.
Jump Bar-Xcode 9.4.1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-23 09:04:34
Istnieją trzy opcje do dodania #pragma_mark
w języku Swift:
1) // MARK: - your text here -
2) // TODO: - your text here -
3) // FIXME: - your text here -
Uwaga: używa -
do dodawania separatorów
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-27 05:51:56
Użyj
// MARK: SectionName
Lub
// MARK: - SectionName
To da linię powyżej znaku pragmy, czyniąc ją bardziej czytelną.
Dla ułatwienia wystarczy dodać
// MARK: - <#label#>
Do Twoich fragmentów kodu.
Alternatywna droga -
Użyj go w ten sposób
private typealias SectionName = ViewController
private extension SectionName {
// Your methods
}
To nie tylko doda znak (tak jak znak pragma), ale także ładnie segreguje kod.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-30 10:41:45
//# MARK: - Spinner Class Methods
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 Oznacz z dołączoną linią.
- / / # MARK: - Text Methods (LINE)
- //# MARK: Text Methods (NO LINE)
To działa tylko z komentarzem MARK.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-29 09:35:11
Profesjonalny programista musi używać tego znacznika dla dobrego kodu. Jest również dobry do pracy zespołowej.
// MARK: example Web Service start here
// TODO: example 1
// FIXME: Please change BASE url before live
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-06 05:12:59
//MARK:
NIE seem do pracy dla mnie w Xcode 6.3.2. Jednak to właśnie zrobiłem z get it to work:
1) kod:
import Cocoa
class MainWindowController: NSWindowController {
//MARK: - My cool methods
func fly() {
}
func turnInvisible() {
}
}
2) w jump bar
nic się nie zmienia po dodaniu //MARK
: komentarz. Jednak, jeśli kliknę na nazwę po prawej stronie na pasku Skoku, w moim przypadku jest napisane MainWindowController(with a leading C icon)
, wtedy pojawi się okno wyskakujące pokazujące efekty / / MARK: comment, a mianowicie nagłówek z napisem " My cool metody": {]}
3) zauważyłem również, że jeśli kliknę na jedną z metod w moim kodzie, to metoda staje się najbardziej po prawej stronie w pasku skoku. Aby uzyskać MainWindowController(with a leading C icon)
Być najbardziej po prawej stronie w pasku skoku, muszę kliknąć na białe znaki nad moimi metodami.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-03 23:01:28
Apple stwierdza w najnowszej wersji budowanie aplikacji Cocoa,
Kompilator Swift nie zawiera preprocesora. Zamiast tego potrzeba zalety atrybutów czasu kompilacji, konfiguracji budowania i funkcje językowe w celu osiągnięcia tej samej funkcjonalności. Do tego powód, dyrektywy preprocesora nie są importowane w języku Swift.
Znak # wydaje się nadal być sposobem pracy z różnymi konfiguracjami budowania i tym podobne, ale to wygląda na to, że próbują ograniczyć Twoje zapotrzebowanie na większość preprocesorów w duchu pragmy i przekierować cię do innych funkcji językowych. Być może ma to pomóc w działaniu placów zabaw i replikacji jak najbliżej w pełni skompilowanego kodu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-03 14:19:49
Add a to-do item: Wstaw komentarz z prefiksem TODO:. Na przykład: / / TODO: [your to-do item].
Add a bug fix reminder: Wstaw komentarz z prefiksem FIXME:. Na przykład: / / FIXME: [your bug fix reminder].
Dodaj nagłówek: Wstaw komentarz ze znakiem przedrostka:. Na przykład: // MARK: [nagłówek Twojej sekcji].
Dodaj linię separatora: aby dodać separator nad adnotacją, dodaj myślnik ( - ) przed częścią komentarza adnotacji. Na przykład: // MARK: - [Twoja treść]. Aby dodać separator pod adnotacją, dodaj myślnik ( - ) po części komentarza adnotacji. Na przykład: / / MARK: [your content] -.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-08 15:29:07