programing

#스위프트의 프라그마 마크?

fastcode 2023. 4. 20. 23:00
반응형

#스위프트의 프라그마 마크?

목표 C에서는 다음을 사용할 수 있습니다.#pragma mark기호 탐색기에서 내 코드 부분을 표시합니다.이것은 C 프리프로세서명령어이므로 Swift에서는 사용할 수 없습니다.Swift ★★★★★★★★★★★★★★★★★★★★★★?니면추 추글 ?글 글? ???

하시면 됩니다.// MARK:


어쨌든 수업 연장을 자유롭게 사용하는 것이 더 나은 관행일 수도 있다는 논의도 있었다.할 수 들어 뷰를 보다 으로 할 수 .#pragma mark아아아아아아아아아아아아아아아아아아아아.

디렉티브 Xcode 5 입니다.#pragma mark재했했다

Xcode 6을 .// MARK:

이러한 프리프로세서 기능에 의해, 소스 코드 에디터의 기능 드롭 다운 박스에 구조가 표시됩니다.

몇 가지 예:

// MARK:

-> 앞에 가로 구분선이 붙습니다.

// MARK: your text goes here

-> 드롭다운목록에 굵은 글씨로 '텍스트가 여기에 갑니다'를 표시합니다.

// MARK: - your text goes here

-> 드롭다운목록에서 "your text goes here"를 굵은 글씨로 표시하고, 그 앞에 가로 구분 기호를 붙입니다.

update : 스크린샷을 추가하였습니다.이것은 일부 사용자가 아직 문제가 있는 것 같기 때문입니다.

여기에 이미지 설명 입력

확장 마크와 플러그마 마크(첫 번째 코멘트 참조)의 사용에 관심이 있는 사용자를 위해 Swift Engineer에서 구현하는 방법은 다음과 같습니다.

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
    }

}

또 꼭 베스트 프랙티스라고는 할 수 없지만, 원한다면 이렇게 하는 것이 좋습니다.

Pragma mark - [SOME TEXT HERE]Objective-C에서 여러 기능을 라인 분리에 의해 그룹화하기 위해 사용되었습니다.

Swift에서는 다음을 사용하여 이 작업을 수행할 수 있습니다.MARK, TODO OR FIXME

i. 마크: //MARK: viewDidLoad

그러면 viewDidLoad(스크린샷1) 아래에 그룹화된 함수와 함께 수평선이 생성됩니다.

스크린샷 1

ii. TODO: //TODO: - viewDidLoad

그러면 TODO: - viewDidLoad 범주(스크린샷 2에 표시됨)에서 기능이 그룹화됩니다.

스크린샷 2

iii. FIXME: //FIXME - viewDidLoad

FIXME: - viewDidLoad 카테고리(스크린샷 3에 표시됨)에서 기능을 그룹화합니다.

스크린샷 3

상세한 것에 대하여는, 이 사과 메뉴얼을 참조해 주세요.

Xcode 공식 문서

Apple의 현재 공식 문서 섹션인 Annote your code for visibility에는 다음과 같은 3가지 코멘트가 소개되어 있습니다.TODO:,FIXME: , , , , 입니다.MARK:.

버전에서 의 코멘트되어 있지 ): "Xcode" (v14.2) "2" ("V14.2")!!!: ★★★★★★★★★★★★★★★★★」???:.

★★★★★★!!!: ★★★★★★★★★★★★★★★★★」???:는 알 수 없는 이유로 일부 Xcode 버전(v10.0 등)에서는 지원되지 않습니다.

샘플 스크린샷 1 - Xcode 14.2 + macOS 13.1 (Ventura)
샘플 스크린샷 2 - Xcode 10.1 + macOS 10.14.3 (모하비)

code_xcode_10_1 jump_bar_xcode_10_1

는 Objective-C의 Xcode와 같은 합니다.// MARK: - foo은, 「휴대성이 좋다」보다 더 이 좋다.#pragma하지만 이것도 아직 주워지지 않은 것 같습니다.

편집: Xcode 6 베타 4로 수정.

대신 더 좋은 방법인 것 같아요.#pragma mark.

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) {
        ...
    }
}

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) {
       ...
    }
}

이것으로 Xcode 8은 다음과 같이 처리되어 메서드드롭다운에 다음과 같이 표시됩니다.

여기에 이미지 설명 입력

오늘 아침 WWDC의 Swift 랩에 있는 Apple Engineer에게 확인한 결과, 현재 #pragma나 그에 상당하는 제품이 없다고 합니다.그리고 곧 도착할 예정이므로 베타 2를 기대하고 있습니다.

어쨌든, 오고 있어요.


Xcode가 코드 주석을 달 수 있도록 //MARK:, //TODO: 및 //FIXME 랜드마크를 지원하여 점프 바에 나열합니다.

세 .#pragma_mark신속:

1)// MARK: - your text here -

2)// TODO: - your text here -

3)// FIXME: - your text here -

" " 를 사용합니다.- separators의

사용하다

// MARK: SectionName

또는

// MARK: - SectionName

그러면 플러그마 마크 위에 선이 표시되므로 읽기 쉬워집니다.

쉽게 추가할 수 있습니다.

// MARK: - <#label#>

코드 스니펫으로 이동합니다.

대체 방법 -

이렇게 사용하다

private typealias SectionName = ViewController
private extension SectionName  {
    // Your methods
}

이것에 의해, 마크가 추가될 뿐만 아니라(프래그마 마크와 같이), 코드를 적절히 분리할 수 있습니다.

//# MARK: - Spinner Class Methods

콜론과 설명 사이에 줄을 추가하여 구분줄을 삽입합니다.이렇게 하면 코드를 더욱 정리할 수 있습니다.위의 코드와 스크린샷에서는 행이 포함된 MARK 코멘트를 사용합니다.

  1. //# 마크: – 텍스트 메서드(LINE)
  2. //# MARK: 텍스트 방식(라인 없음)

이것은 MARK 코멘트만으로 동작합니다.

여기에 이미지 설명 입력

또한 다음과 같은 Swift 4.2 / XCode 10 컴파일러 디렉티브에 관심이 있을 수 있습니다.

#warning("Some string to display")

그리고.

#error("Some error to display")

정말 뭔가를 놓치고 싶지 않을 때 도움이 될 수 있어요.

여기에 이미지 설명 입력

전문 프로그래머는 이 태그를 사용하여 코드를 올바르게 작성해야 합니다.그것은 또한 팀워크에도 좋다.

// MARK: example Web Service start here
// TODO: example 1
// FIXME: Please change BASE url before live 

이런 방법은 찾기 쉽다

이런 방법은 찾기 쉽다

에서는, 하게 할 수을 Xcode 에서 활성화 할 수 있습니다.Editor -> Minimap.

Minimap은 코드의 빠른 방향을 위해 각 마크 텍스트를 표시합니다. 마크는 '마음표'라고 요.// MARK: Variables

여기에 이미지 설명 입력

//MARK:Xcode 6.3.2에서는 동작하지 않는 것 같습니다.다만, 다음과 같이 동작시키고 있습니다.

1) 코드:

import Cocoa

class MainWindowController: NSWindowController {

    //MARK: - My cool methods

    func fly() {
    }

    func turnInvisible() {

    }
}

② ② jump bar 않는 것처럼 .//MARK: 코멘트.하지만 점프바에서 맨 오른쪽 이름을 클릭하면MainWindowController(with a leading C icon)그러면 //MARK: 코멘트, 즉 "My cool methods"라는 제목의 효과를 보여주는 팝업 창이 나타납니다.

여기에 이미지 설명 입력

3) 코드의 메서드 중 하나를 클릭하면 점프바의 맨 오른쪽 엔트리가 됩니다.입수하기 위해서MainWindowController(with a leading C icon)점프바에서 가장 오른쪽 엔트리가 되려면 메서드 위의 공백을 클릭해야 합니다.

Apple은 Building Cocoa Apps의 최신 버전에서 언급하고 있다.

Swift 컴파일러에는 프리프로세서가 포함되어 있지 않습니다.대신 컴파일 시간 속성, 빌드 구성 및 언어 기능을 활용하여 동일한 기능을 구현합니다.따라서 Swift에서는 프리프로세서 디렉티브는 Import되지 않습니다.

# 문자는 여전히 다양한 빌드 구성 등에서 작업할 수 있는 것처럼 보이지만, 플러그마의 관점에서 대부분의 전처리에 대한 요구를 줄이고 다른 언어 기능으로 전송하려는 것으로 보입니다.아마도 이것은 Playgrounds와 REP가 완전히 컴파일된 코드에 최대한 가깝게 동작하는 데 도움이 될 것입니다.

플러그마 마크는 코드 가독성을 향상시키는 방법입니다.플러그마 코멘트는 Xcode 점프바에 태그와 같이 표시됩니다.

//MARK:  <Your comment goes here>

예:코드에서

//MARK: Properties

// MARK: View Life cycle

//MARK: Helper methods

Xcode 점프바에는 이렇게 표시됩니다.

여기에 이미지 설명 입력

할 일 항목 추가:TODO: 접두사가 붙은 주석을 삽입합니다.예: // TODO: [할 일 항목]

버그 수정 알림 추가:FIXME: 접두사가 붙은 코멘트를 삽입합니다.예: // FIXME: [버그 수정 알림]

제목을 추가합니다.MARK: 접두사가 붙은 주석을 삽입합니다.예: // MARK: [섹션 제목]

구분선 추가:주석 위에 구분 기호를 추가하려면 주석의 주석 부분 앞에 하이픈(-)을 추가합니다.예: // MARK: - [내 콘텐츠]주석 아래에 구분 기호를 추가하려면 주석의 주석 부분 뒤에 하이픈(-)을 추가합니다.예: // MARK: [내 콘텐츠] -

이것을 시험해 보세요.

// MARK: Reload TableView

func reloadTableView(){

    tableView.reload()
}

언급URL : https://stackoverflow.com/questions/24017316/pragma-mark-in-swift

반응형