Swift의 #pragma 마크?
Objective C에서는 #pragma mark
기호 탐색기에서 코드 섹션을 표시 하는 데 사용할 수 있습니다 . 이것은 C 전 처리기 명령이므로 Swift에서는 사용할 수 없습니다. Swift에서 이에 대한 대립이 있습니까, 아니면 추악한 주석을 사용해야합니까?
당신이 사용할 수있는 // MARK:
어쨌든 클래스 확장을 자유롭게 사용하는 것이 더 나은 방법이 될 수 있다는 논의도있었습니다. 확장은 프로토콜을 구현할 수 있기 때문에 예를 들어 모든 테이블 뷰 위임 메서드를 확장에 넣고 #pragma mark
가능한 것보다 더 의미있는 수준에서 코드를 그룹화 할 수 있습니다.
확장과 pragma 마크를 사용하는 데 관심이있는 사람들을 위해 (첫 번째 주석에서 언급했듯이) 다음은 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
}
}
또한 반드시 모범 사례는 아니지만 원하는 경우 이렇게하는 방법입니다.
Xcode 5까지 전 처리기 지시문이 #pragma mark
존재했습니다.
Xcode 6부터는 다음을 사용해야합니다. // MARK:
이러한 전 처리기 기능을 사용하면 소스 코드 편집기의 기능 드롭 다운 상자에 일부 구조를 가져올 수 있습니다.
몇 가지 예 :
// MARK:
-> 앞에 가로 구분선이옵니다.
// MARK: your text goes here
-> 드롭 다운 목록에서 '여기에 텍스트 입력'을 굵게 표시합니다.
// MARK: - your text goes here
-> 드롭 다운 목록에서 '여기에 텍스트 입력'을 굵게 표시하고 앞에 가로 구분선이 표시됩니다.
업데이트 : 일부 사람들이 여전히 문제가있는 것 같기 때문에 스크린 샷 추가 :
Pragma mark - [SOME TEXT HERE]
Objective-C에서 여러 기능 을 줄 구분 으로 그룹화 하는 데 사용되었습니다 .
Swift 에서는 다음을 사용하여이를 달성 할 수 있습니다.MARK, TODO OR FIXME
나는. 마크 : //MARK: viewDidLoad
그러면 viewDidLoad 아래에 그룹화 된 함수가 있는 수평선 이 생성 됩니다 (스크린 샷 1 참조).
ii. 할 것 : //TODO: - viewDidLoad
TODO :-viewDidLoad 카테고리 (스크린 샷 2에 표시됨) 아래에 함수가 그룹화됩니다 .
iii. 나를 해결 : //FIXME - viewDidLoad
FIXME 아래에 그룹 기능이 있습니다 .-viewDidLoad 범주 (스크린 샷 3에 표시됨)
오브젝티브 C 코드에서 엑스 코드처럼 코멘트 검출 // MARK: - foo
보다 약간 더 휴대용 어느 #pragma
. 그러나 이것들도 (아직?) 픽업되지 않은 것 같습니다.
편집 : Xcode 6 베타 4에서 수정되었습니다.
공식 문서
Xcode 점프 바에 대한 Apple의 공식 문서 : 점프 바에 코드 주석 추가
샘플 코드에 대한 점프 바 스크린 샷
Xcode 10.1 및 macOS 10.14.3 (Mojave)의 동작
Xcode 10.0 및 macOS 10.13.4 (High Sierra)의 동작
Xcode 9.4.1 및 macOS 10.13.0의 동작
토론
!!!:
그리고 ???:
때로는 표시 할 수 없습니다.
Xcode 8은 이제 다음과 같이 처리하고 메서드 드롭 다운에 다음과 같이 표시됩니다.
Extensions
대신에 더 나은 방법 이라고 생각 #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) {
...
}
}
오늘 아침 WWDC의 Swift 랩에서 Apple 엔지니어와 함께 현재 #pragma 또는 이에 상응하는 항목이 없다고 확인했으며,이 버그를 버그로 간주하고 곧 도착할 것이므로 베타 2를 예상하고 있습니다.
어쨌든, 그것은 가고 있습니다.
이제 Xcode는 // MARK :, // TODO : 및 // FIXME 랜드 마크를 지원하여 코드에 주석을 달고 점프 바에 나열합니다.
#pragma_mark
Swift 에 추가 할 수 있는 세 가지 옵션이 있습니다 .
1) // MARK: - your text here -
2) // TODO: - your text here -
삼) // FIXME: - your text here -
참고 : -
구분 기호 추가에 사용
사용하다
// MARK: SectionName
또는
// MARK: - SectionName
이렇게하면 pragma 표시 위에 줄이 표시되어 더 읽기 쉽습니다.
쉽게 추가하기
// MARK: - <#label#>
코드 조각에.
다른 방법-
이런 식으로 사용
private typealias SectionName = ViewController
private extension SectionName {
// Your methods
}
이것은 (pragma 마크와 마찬가지로) 마크를 추가 할뿐만 아니라 코드를 멋지게 분리합니다.
//# MARK: - Spinner Class Methods
콜론과 설명 사이에 줄을 추가하여 구분선을 삽입합니다. 이렇게하면 코드를 더 많이 구성하는 데 도움이됩니다. 위의 코드와 스크린 샷은 라인이 포함 된 MARK 주석을 사용합니다.
- // # MARK : – 텍스트 메서드 (LINE)
- // # 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
이와 같은 방법은 찾기 쉽습니다.
//MARK:
Xcode 6.3.2에서 나를 위해 작동 하지 않는 것 같습니다 . 그러나 이것이 내가 작동하도록 한 것입니다 .
1) 코드 :
import Cocoa
class MainWindowController: NSWindowController {
//MARK: - My cool methods
func fly() {
}
func turnInvisible() {
}
}
2) : 주석을 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에서 가져 오지 않습니다.
# 문자는 여전히 다양한 빌드 구성 및 이와 같은 작업을 수행하는 방식으로 보이지만 pragma의 맥락에서 대부분의 전처리에 대한 요구를 줄이고 모두 다른 언어 기능으로 전달하려는 것 같습니다. 아마도 이것은 완전히 컴파일 된 코드에 최대한 가깝게 동작하는 플레이 그라운드와 REPL의 운영을 돕기위한 것입니다.
Xcode 11에서는 활성화 할 수있는 미니 맵을 추가했습니다 Editor -> Minimap
.
Minimap은 코드에서 빠른 방향을 위해 각 마크 텍스트를 표시합니다. 각 표시는 다음과 같이 작성됩니다.// MARK: Variables
할 일 항목 추가 : TODO : 접두사가있는 주석을 삽입합니다. 예 : // TODO : [할일 항목].
버그 수정 알림 추가 : FIXME : 접두사를 사용하여 주석을 삽입합니다. 예 : // FIXME : [버그 수정 알림].
제목 추가 : 접두사 MARK :를 사용하여 주석을 삽입합니다. 예 : // MARK : [내 섹션 제목].
구분선 추가 : 주석 위에 구분선을 추가하려면 주석의 주석 부분 앞에 하이픈 (-)을 추가합니다. 예 : // MARK :-[내 콘텐츠]. 주석 아래에 구분 기호를 추가하려면 주석의 주석 부분 뒤에 하이픈 (-)을 추가하십시오. 예 : // MARK : [내 콘텐츠]-.
이 시도:
// MARK: Reload TableView
func reloadTableView(){
tableView.reload()
}
Pragma 마크는 코드의 가독성을 향상시키는 방법입니다. pragma 주석은 Xcode 점프 바의 태그처럼 나타납니다.
//MARK: <Your comment goes here>
예 : 코드에서
//MARK: Properties
// MARK: View Life cycle
//MARK: Helper methods
이것이 Xcode 점프 바에 나타나는 방식입니다.
참고 URL : https://stackoverflow.com/questions/24017316/pragma-mark-in-swift
'programing' 카테고리의 다른 글
드로어 블을 비트 맵으로 변환하는 방법은 무엇입니까? (0) | 2020.09.28 |
---|---|
생성자와 ngOnInit의 차이점 (0) | 2020.09.28 |
외부 JAR에서 "오류 1로 인해 Dalvik 형식으로 변환 실패" (0) | 2020.09.28 |
JSON을 C # 동적 개체로 역 직렬화 하시겠습니까? (0) | 2020.09.28 |
어떤 @NotNull Java 주석을 사용해야합니까? (0) | 2020.09.28 |