#Pragma Mark in Swift

#pragma mark in Swift?

You can use // MARK:

There has also been discussion that liberal use of class extensions might be a better practice anyway. Since extensions can implement protocols, you can e.g. put all of your table view delegate methods in an extension and group your code at a more semantic level than #pragma mark is capable of.

What is the equivalent of #pragma mark - in swift?

Use something like that:

// MARK: - UITableViewDataSource

Or use extensions: I love the way how UITableViewDataSource delegate is implemented in this answer

Swift: Understanding // MARK

The // MARK: and // MARK: - syntax in Swift functions identically to the #pragma mark and #pragma mark - syntax in Objective-C.

When using this syntax (plus // TODO: and // FIXME:), you can get some extra information to show up in the quick jump bar.

Consider these few lines of source code:

// MARK: A mark comment lives here.

func isPrime(_ value: UInt) -> Bool { return true }

Sample Image

And for reference, the quick jump bar is at the top in Xcode:

Sample Image

It exists mostly to help with quick navigation within the file.

Note that the dash (// MARK: -) causes a nice separation line to show up. Consider this MARK comment:

// MARK: - A mark comment lives here.

Sample Image

The darker gray separator line just above the bolded option in that menu comes from the dash.

Additionally, we can achieve this separator line without a comment by simply not having any text after the dash:

// MARK: -

Sample Image

As mentioned, // TODO: and // FIXME: comments will also appear here.

// MARK: - Prime functions

func isPrime(_ value: UInt) -> Bool {
// TODO: Actually implement the logic for this method
return true

func nthPrime(_ value: UInt) -> Int {
// FIXME: Returns incorrect values for some arguments
return 2

Sample Image

  • FIXMEs get a little band-aid icon that help them standout.
  • MARK icon looks like a table of contents
  • TODO icons look more like a checklist

Clicking on any line in the quick jump bar takes you directly to that line in the source code.

Is it Possible MARK: (#pragma mark) in Localizable.string file

Yes, it's possible.

You're missing a few required semi-colons. I guess it is used for string-termination or similar under the hood...


Is it possible to have a #pragma mark hierarchy?

Simply only use the - before and after your main section to surround it in lines, exclude the dash for the subsections, and then the method names will show as always.

#pragma mark - Public Methods -
#pragma mark Helper Methods
- (void)aMethod{}
#pragma mark Other Type of Methods
- (void)anotherMethod{}

#pragma mark - Private Methods -
#pragma mark Some Type of Method
- (void)aPrivateMethod{}

Sample Image

Related Topics

Leave a reply