#pragma ทำเครื่องหมายใน Swift หรือไม่


936

ใน Objective C ฉันสามารถใช้#pragma markเพื่อทำเครื่องหมายส่วนของรหัสของฉันในเนวิเกเตอร์สัญลักษณ์ เนื่องจากนี่เป็นคำสั่งตัวประมวลผลล่วงหน้า C จึงไม่สามารถใช้ได้ใน Swift มีการยืนหยัดในเรื่องนี้ใน Swift หรือฉันต้องใช้ความคิดเห็นที่น่าเกลียด?


15
มันสำคัญมากสำหรับการจัดระเบียบรหัสยาว ๆ ของเรา
iPatel

ปรากฏว่าไม่มีความแตกต่างที่มองเห็นได้อย่างรวดเร็วระหว่างความคิดเห็นและเครื่องหมายส่วน ไม่มีการตั้งชื่อส่วนขยายดังนั้นไฟล์ที่แยกกันจึงเป็นวิธีเดียวที่จะแยกแยะระหว่างความคิดเห็นทั้งสองประเภท
สตีเฟนเจส

1
คุณสามารถตรวจสอบสิ่งนี้: stackoverflow.com/a/33040068/1753005
Jayprakash Dubey

1
สำหรับมือใหม่ Swift และ Xcode อื่น ๆ ฉันจะพูดถึงว่า "สัญลักษณ์นำทาง" ที่ทุกคนกำลังพูดถึงคือสิ่งที่คุณได้รับเมื่อคุณคลิกที่สิ่งที่ถูกที่สุดใน "jump bar" ที่ด้านบนของหน้าต่างการแก้ไข มันไม่ใช่ตัวนำทางสัญลักษณ์ในแผงด้านซ้าย
RenniePet

1
@HarshilKotecha Swift เป็นภาษาโปรแกรมที่ไม่ขึ้นกับแพลตฟอร์มที่ใช้งาน Pragma mark เป็นส่วนหนึ่งของ Swift และสามารถใช้กับ Linux, macOS และแพลตฟอร์มอื่น ๆ ของ Apple รวมถึง iOS มันจะไร้สาระที่จะติดแท็กคำถามนี้กับแพลตฟอร์มใด ๆ เหล่านี้เพราะเครื่องหมาย pragma เป็นคุณลักษณะของ Swift นั้นไม่ใช่ของแพลตฟอร์ม iOS เป็นเพียงหนึ่งในหลาย ๆ แพลตฟอร์มที่สวิฟท์รัน นี่เป็นสิ่งสำคัญที่จะเข้าใจ คำถามนี้ไม่เกี่ยวกับ iOS และไม่เกี่ยวกับ Linux หรือ macOS มันเกี่ยวกับสวิฟท์
Eric Aya

คำตอบ:


1202

คุณสามารถใช้ได้ // MARK:


มีการถกเถียงกันอยู่ว่าการใช้ส่วนขยายคลาสอย่างเสรีอาจเป็นการฝึกฝนที่ดีกว่าอยู่ดี เนื่องจากส่วนขยายสามารถใช้โปรโตคอลได้เช่นคุณสามารถวางวิธีการมอบหมายมุมมองตารางทั้งหมดในส่วนขยายและจัดกลุ่มรหัสของคุณในระดับความหมายมากกว่าที่#pragma markสามารถทำได้


64
และใช่สัญญานักพัฒนาซอฟต์แวร์ใหม่ช่วยให้เราพูดคุยเกี่ยวกับสิ่งนี้ :)
แฟรงก์มิต

4
คุณไม่สามารถใช้ส่วนขยายเพื่อเก็บโพรโทคอลที่มีวิธีการเริ่มต้นเช่น NSCoding ทำให้แยกออกได้ยากหากคุณไม่สามารถใช้งานได้ในทุกกรณี
Matthew Knippen

149
ในฐานะของเบต้า 4 Xcode 6 ตระหนัก// MARK:, // TODO:และ// FIXMEในแหล่งที่มาของสวิฟท์และรายการพวกเขาในแถบกระโดด (BTW มันได้ทำในแหล่งที่มา (Obj) C - #pragma markไม่ใช่วิธีเดียว) และใช่คุณยังสามารถเพิ่มตัวคั่น-ของคุณMARKในเมนู
rickster

17
+1 สำหรับการแนะนำส่วนขยาย แม้จะใช้MARKงานได้ในตอนนี้การใช้ส่วนขยายเพื่อจัดกลุ่มโค้ดที่เกี่ยวข้องกับความหมายบางประเภท (โดยเฉพาะการใช้โปรโตคอล) ยังคงมีประโยชน์ IMHO จะอ่านดีกว่ามากเพื่อให้การประกาศของคุณสอดคล้องกับโพรโทคอลถัดจากวิธีการที่ใช้มันไม่ใช่การประกาศโปรโตคอล 5 รายการที่ด้านบนของไฟล์
rickster

37
@StevenKramer: #pragma markเช่นเดียวกับ // MARK: -เป็นเพียงตัวแยก// MARK: - stuffให้ตัวแยกและส่วนหัว// MARK: - stuff -แก่คุณและให้ตัวคั่นส่วนหัวและตัวคั่นอื่นทั้งหมดในบรรทัดความคิดเห็นเดียว
rickster

174

มากถึง Xcode 5 คำสั่งของตัวประมวลผลล่วงหน้า#pragma markมีอยู่

จาก Xcode 6 คุณต้องใช้ // MARK:

คุณลักษณะตัวประมวลผลล่วงหน้าเหล่านี้อนุญาตให้นำโครงสร้างบางอย่างไปยังกล่องฟังก์ชันหล่นลงของตัวแก้ไขซอร์สโค้ด

ตัวอย่างบางส่วน:

// MARK:

-> จะถูกนำหน้าด้วยตัวแบ่งแนวนอน

// MARK: your text goes here

-> วาง 'ข้อความของคุณที่นี่' เป็นตัวหนาในรายการแบบหล่นลง

// MARK: - your text goes here

-> วาง 'ข้อความของคุณที่นี่' เป็นตัวหนาในรายการแบบหล่นลงนำหน้าด้วยตัวแบ่งแนวนอน

อัปเดต: เพิ่มภาพหน้าจอ 'ทำให้บางคนยังดูเหมือนมีปัญหากับสิ่งนี้:

ป้อนคำอธิบายรูปภาพที่นี่


1
มีตัวคั่นไม่มีใน XCode 6.1.1 ใช้เป็น// MARK: - textสำหรับฉันหล่นลงรายการการแสดงและข้อความ: MARKแทนเพียงข้อความ
Mostruash

ทำงานได้ดีสำหรับฉันใน Xcode 6.1.1 ฉันเพิ่งเพิ่มภาพหน้าจอ - โปรดตรวจสอบด้วยรหัสของคุณ?
Ronny Webers

ฉันลืมที่จะพูดถึงว่าฉันพยายามมันสำหรับไฟล์ Objective-C ขอบคุณสำหรับความพยายามขอบคุณ
Mostruash

1
ฉันเห็นแล้วตอนนี้มันชัดเจน :-) คำถามเริ่มแรกถามเกี่ยวกับ Swift ดังนั้นฉันจึงไม่คิดอย่างนั้น เพื่อความสมบูรณ์: ใน Objective-C คุณสามารถทำได้โดยใช้: #pragma mark - ข้อความมาร์กเกอร์ของคุณอยู่ที่นี่หรือเพียงแค่#pragma mark -หากคุณต้องการบาร์หรือ#pragma mark ข้อความมาร์กเกอร์ของคุณจะเหมือนเดิม ไม่มีบาร์ (ขออภัยฉันไม่สามารถรับมาร์กอัปที่ถูกต้องสำหรับชิ้นส่วนของรหัสได้ฉันใส่ไว้ในตัวหนา)
Ronny Webers

มันเปลี่ยนไปเล็กน้อยใน Xcode 8.1 แต่กฎนี้ใช้งานได้ปกติต้องการคำตอบที่ดีที่สุด: D
windsound

167

สำหรับผู้ที่มีความสนใจในการใช้ส่วนขยายกับเครื่องหมาย 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
    }

}

มันไม่จำเป็นต้องเป็นแนวปฏิบัติที่ดีที่สุดด้วย แต่นี่คือวิธีที่คุณทำหากคุณต้องการ


6
มันเจ๋งมาก แต่น่าจะดีถ้าส่วนขยายมีชื่อ
Matthew Knippen

16
@ Matthew - typealiasคุณสามารถใช้ typealias DataSource = SwiftTableViewControllerเช่น จากนั้นextension Datasource {}
โลแกน

1
@PongLe UITableViewControllerไม่ใช่โปรโตคอล แต่เป็นคลาส คุณอาจหมายถึงUITableViewControllerDataSourceแต่นี่ไม่ใช่รูปแบบที่ใช้ในตัวอย่าง
KPM

4
ฉันแค่สงสัยว่าทำไมไม่มีextensionส่วนหัวที่มีโปรโตคอลเช่นextension SwiftTableViewController : UITableViewControllerมันจะอ่านง่ายขึ้นเพื่อดูว่าทำไมคุณเพิ่มส่วนขยายนั้นในชั้นเรียน
holex

7
โปรดทราบว่าหากส่วนขยายของคุณมีไว้เพื่อใช้เป็นโปรโตคอลเท่านั้นคุณสามารถตั้งชื่อส่วนขยายได้extension SwiftTableViewController : UITableViewDelegate { .. }และextension SwiftTableViewController : UITableViewDatasource { .. }
Craig Otis

117

Pragma mark - [SOME TEXT HERE]ถูกใช้ในObjective-C เพื่อจัดกลุ่มฟังก์ชั่นหลาย ๆ อย่างด้วยกันโดยการแยกบรรทัด

ในSwiftคุณสามารถใช้สิ่งนี้ได้MARK, TODO OR FIXME

ผม. เครื่องหมาย: //MARK: viewDidLoad

สิ่งนี้จะสร้างเส้นแนวนอนพร้อมฟังก์ชั่นที่จัดกลุ่มภายใต้ viewDidLoad (แสดงในภาพหน้าจอ 1)

ภาพหน้าจอ 1

ii ทำ : //TODO: - viewDidLoad

ฟังก์ชันนี้จะจัดกลุ่มภายใต้สิ่งที่ต้องทำ: -หมวดหมู่viewDidLoad (แสดงในภาพหน้าจอ 2)

ภาพหน้าจอ 2

สาม. ช่วยแก้ไขข้อบกพร่องฉันหน่อย : //FIXME - viewDidLoad

ฟังก์ชันนี้จะจัดกลุ่มภายใต้FIXME: -หมวดหมู่viewDidLoad (แสดงในภาพหน้าจอ 3)

ภาพหน้าจอ 3

ตรวจสอบเอกสารประกอบของ Appleนี้เพื่อดูรายละเอียด


โปรดสังเกตว่า "-" หลังจากสิ่งที่ต้องทำและ FIXME จะไม่ทำอะไรเลย เครื่องหมาย "-" มีความเกี่ยวข้องกับคำสั่ง MARK เท่านั้น
rismay

1
นอกจากนี้ยังสร้างส่วนหัวที่ใหญ่และใหญ่ในรหัส "ย่อแผนที่" ที่คุณสามารถแสดงทางด้านขวาของไฟล์ต้นฉบับ ค่อนข้างมีประโยชน์
ออสการ์

65

เอกสารอย่างเป็นทางการ

เอกสารอย่างเป็นทางการของ Apple เกี่ยวกับ Xcode Jump Bar: เพิ่มคำอธิบายประกอบโค้ดลงในแถบกระโดด

Jump Bar สกรีนช็อตสำหรับโค้ดตัวอย่าง

รหัสตัวอย่าง

พฤติกรรมใน Xcode 10.1 และ macOS 10.14.3 (ซ้อม)

Xcode 10.1 และ macOS 10.14.3

พฤติกรรมใน Xcode 10.0 และ macOS 10.13.4 (High Sierra)

Xcode 10.0 และ macOS 10.13.4

พฤติกรรมใน Xcode 9.4.1 และ macOS 10.13.0

Xcode 9.4.1 และ macOS 10.13.0

อภิปรายผล

!!!:และ???:บางครั้งไม่สามารถแสดงได้


!!!: และ ???: ไวยากรณ์ไม่ทำงานบน Xcode 11.3.1
Jayprakash Dubey

56

ในรหัส Objective-C Xcode ตรวจพบความเห็นชอบซึ่งเป็นบิตแบบพกพามากกว่า// MARK: - foo #pragmaแต่ดูเหมือนว่าสิ่งเหล่านี้จะไม่ถูกหยิบมาใช้ด้วย (ยัง?)

แก้ไข: แก้ไขใน Xcode 6 เบต้า 4


6
ฉันหวังว่าพวกเขาจะให้บริการในเร็ว ๆ นี้เพราะฉันต้องการให้ทุกอย่างจัดระเบียบด้วยเครื่องหมาย pragma> <
Arbitur

1
ฉันสามารถยืนยัน// MARK: -ได้ว่าไม่ได้ทำงานในขณะนี้
รุยเปเรส

ไม่ทำงาน แต่โค้ดตัวอย่างถูกทิ้งให้อยู่ในรูปแบบของความคิดเห็นนั้นดังนั้นจึงควรเลือกขึ้นในที่สุด
Nate Cook

1
เป็นสิ่งสำคัญหรือไม่ที่ความคิดเห็นควรเป็นแบบพกพา เนื่องจากการย้ายรหัสSwiftไปยังภาษาอื่น ๆ โดยตรงนั้นเป็นสิ่งที่ท้าทายสำหรับนักพัฒนาซอฟต์แวร์
holex

อืมฉันเห็นผู้คนมากมายแสดงความคิดเห็นว่ามันใช้งานได้ แต่ฉันใช้งานบน Beta 6 และ// MARK:ดูเหมือนจะไม่ทำงาน ฉันได้ลองด้วย & โดยไม่เว้นวรรคทั้งที่มีและไม่มีโคลอนตัวพิมพ์ใหญ่และผสม (Mark) มีเคล็ดลับหรือไม่? ฉันต้องเปิดใช้งาน pref หรืออะไรสักอย่าง?
Olie

37

ผมคิดว่าเป็นวิธีที่ดีกว่าแทน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) {
       ...
    }
}

6
ฉันคิดว่ามันมีศักยภาพมากกว่าทาง pragmas แต่ในเวลานี้ pragmas ยังดีกว่าเพราะส่วนขยายไม่แสดงชื่อโปรโตคอลหรือชื่อที่กำหนดเองในเมนูแบบหล่นลงเหมือนที่ pragmas ทำ ( ดูด้านล่างคำตอบของ Whasssaaahhh )
nacho4d

รหัส "// MARK:" ใหม่มีประโยชน์ แต่ฉันก็ชอบตัวอย่างที่ชัดเจนของคุณเกี่ยวกับวิธีการใช้ส่วนขยาย - โดยเฉพาะอย่างยิ่งสำหรับฟังก์ชั่นการมอบหมาย!
ElmerCat

ส่วนขยายยัง จำกัด สิ่งที่คุณทำได้เช่นไม่มีคุณสมบัติที่เก็บไว้
Vorlon ที่สับสน

1
ฉันใช้ทั้งคู่เพราะextensionอย่างเดียวไม่โดดเด่นในเมนูแบบเลื่อนลงของตัวควบคุม breadcrumb ของ Xcode
Nicolas Miari

36

Xcode 8 ตอนนี้จัดการตามแล้วและปรากฏขึ้นเช่นนี้ในวิธีการแบบเลื่อนลง:

ป้อนคำอธิบายรูปภาพที่นี่


สิ่งที่เกี่ยวกับมาร์ค: มันแสดง// ARK: ให้ฉันเห็นใน Xcode 8
fnc12

ตรวจสอบรหัสของคุณคุณอาจใช้อักขระยูนิโค้ดด้านบนบรรทัด // MARK: ของคุณ ด้วยเหตุผลบางอย่าง xcode สับสน (และเพราะแย่มาก) และไม่สามารถจัดการกับมันได้
carlos_ms

3
!!!และ???ไวยากรณ์ไม่ปรากฏที่จะทำงานใน Xcode 8.3.3 ...
คริสเฟรเดอริ

@ChrisFrederick แม้ !!! และ ??? ดูเหมือนจะไม่ได้ทำงานกับ Xocde 11.3.1
Jayprakash Dubey

34

ยืนยันกับวิศวกรของ Apple ในห้องปฏิบัติการ Swift ที่ WWDC ในตอนนี้ว่าไม่มี #pragma หรือเทียบเท่าในขณะนี้พวกเขาพิจารณาข้อผิดพลาดนี้และมันจะมาถึงในไม่ช้าดังนั้นฉันจึงคาดเดาเบต้า 2 ฉันหวังว่า

อย่างไรก็ตามมันเป็นไปในทาง


ตอนนี้ Xcode สนับสนุน // MARK:, // สิ่งที่ต้องทำ: และ // สถานที่สำคัญ FIXME เพื่อใส่คำอธิบายประกอบรหัสของคุณและแสดงไว้ในแถบกระโดด


6
เบต้า 2 ยังไม่มีเลย
cescofry

แปลก. ทำงานให้ฉันได้ดี PS: อัปเดต Xcode ของคุณ
Daniel

@Daniel: Xcode รุ่นใด ฉันใช้ Xcode 6.4 และดูเหมือนจะไม่ทำงาน
Jayprakash Dubey

19

มีสามตัวเลือกในการเพิ่ม#pragma_markใน Swift:

1) // MARK: - your text here -

2) // TODO: - your text here -

3) // FIXME: - your text here -

หมายเหตุ: ใช้ -สำหรับเพิ่มตัวคั่น


17

ใช้

// MARK: SectionName

หรือ

// MARK: - SectionName

สิ่งนี้จะให้บรรทัดเหนือเครื่องหมาย pragma ทำให้อ่านง่ายขึ้น

เพื่อความสะดวกเพียงเพิ่ม

// MARK: - <#label#>

ไปยังตัวอย่างโค้ดของคุณ

ทางเลือก -

ใช้วิธีนี้

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

สิ่งนี้จะไม่เพียงเพิ่มเครื่องหมาย (เหมือนเครื่องหมาย pragma) แต่ยังแยกรหัสอย่างชัดเจน


1
หากคุณใช้Swiftlintมันจะบ่นเกี่ยวกับ//MARKรูปแบบ (ไม่มีช่องว่าง) และแนะนำ// MARK: (text)( ช่องว่างระหว่าง//และเครื่องหมายไม่มีช่องว่างระหว่างMARKและ:และช่องว่างระหว่าง:และชื่อช่องว่าง )
Nicolas Miari

2
@ NicolasMiari ขอบคุณฉันได้แก้ไขตามคำแนะนำของคุณแล้ว และจะลองใช้ SwiftLint สำหรับโครงการถัดไป :)
Nikhil Manapure

13
//# MARK: - Spinner Class Methods

เพิ่มบรรทัดระหว่างโคลอนและคำอธิบายของคุณเพื่อแทรกบรรทัดคั่น สิ่งนี้ช่วยในการจัดระเบียบโค้ดของคุณมากยิ่งขึ้น รหัสและภาพหน้าจอด้านบนใช้ประโยชน์จากความคิดเห็นของมาร์คที่มีบรรทัดรวมอยู่ด้วย

  1. // # MARK: - วิธีการข้อความ (LINE)
  2. // # MARK: วิธีการข้อความ (ไม่มีบรรทัด)

ใช้งานได้กับความคิดเห็นของ MARK เท่านั้น

ป้อนคำอธิบายรูปภาพที่นี่


12

คุณอาจสนใจคำสั่งคอมไพเลอร์Swift 4.2 / XCode 10เช่น

#warning("Some string to display")

และ

#error("Some error to display")

มันอาจมีประโยชน์เมื่อคุณไม่ต้องการพลาดบางสิ่ง

ป้อนคำอธิบายรูปภาพที่นี่


เย็น. ฉันจะเตือนเพื่อนร่วมทีมคนอื่น ๆ เมื่อลูกเสือละเมิดกฎเป็นต้นไป
Sazzad Hissain Khan

9

โปรแกรมเมอร์มืออาชีพจะต้องใช้แท็กนี้เพื่อรหัสที่ดี นอกจากนี้ยังเป็นสิ่งที่ดีสำหรับการทำงานเป็นทีม

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

มันง่ายที่จะหาวิธีการเช่นนี้

มันง่ายที่จะหาวิธีการเช่นนี้


6

ใน Xcode 11 พวกเขาเพิ่มแผนที่ย่อที่สามารถเปิดใช้งานEditor -> Minimapได้

แผนที่ย่อจะแสดงข้อความแต่ละข้อความสำหรับการวางแนวอย่างรวดเร็วในรหัส เครื่องหมายแต่ละอันเขียนเหมือนกัน// MARK: Variables

ป้อนคำอธิบายรูปภาพที่นี่


5

//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: ความคิดเห็นซึ่งเป็นหัวเรื่องที่ระบุว่า "วิธีเด็ด ๆ ของฉัน":

ป้อนคำอธิบายรูปภาพที่นี่

3) ฉันยังสังเกตเห็นว่าถ้าฉันคลิกที่หนึ่งในวิธีการในรหัสของฉันแล้ววิธีการจะกลายเป็นรายการที่ถูกที่สุดในแถบกระโดด เพื่อที่จะได้MainWindowController(with a leading C icon)เป็นรายการที่ถูกที่สุดในแถบกระโดดฉันต้องคลิกที่ช่องว่างด้านบนวิธีการของฉัน


ไม่ว่ามันควรจะเป็นอย่างไร คุณต้องคลิกที่แถบด้านบนหรือไม่
Arbitur

3

แอปเปิ้ลระบุในรุ่นล่าสุดของอาคารโกโก้ปพลิเคชัน ,

คอมไพเลอร์ Swift ไม่มีตัวประมวลผลล่วงหน้า แต่จะใช้ประโยชน์จากคุณลักษณะเวลาคอมไพล์สร้างการกำหนดค่าและคุณสมบัติภาษาเพื่อทำหน้าที่การทำงานเดียวกัน ด้วยเหตุผลนี้คำสั่ง preprocessor จะไม่ถูกนำเข้าใน Swift

อักขระ # ยังคงเป็นวิธีที่คุณทำงานกับการกำหนดค่าการสร้างต่าง ๆ และสิ่งต่าง ๆ เช่นนั้น แต่ดูเหมือนว่าพวกเขากำลังพยายามลดความต้องการของคุณสำหรับการประมวลผลล่วงหน้าส่วนใหญ่ในหลอดเลือดของ pragma และส่งต่อคุณไปยังคุณสมบัติภาษาอื่น ๆ ทั้งหมด บางทีนี่อาจช่วยในการทำงานของ Playgrounds และ REPL ที่ทำงานใกล้เคียงกับโค้ดที่ถูกคอมไพล์อย่างสมบูรณ์ที่สุด


0

เพิ่มไอเท็มสิ่งที่ต้องทำ: แทรกความคิดเห็นด้วยคำนำหน้าสิ่งที่ต้องทำ: ตัวอย่างเช่น: // TODO: [ไอเท็มสิ่งที่ต้องทำของคุณ]

เพิ่มตัวเตือนการแก้ไขข้อบกพร่อง: ใส่ความคิดเห็นด้วยคำนำหน้า FIXME: ตัวอย่างเช่น: // FIXME: [การแจ้งเตือนการแก้ไขข้อบกพร่องของคุณ]

เพิ่มหัวข้อ: ใส่ความคิดเห็นด้วยคำนำหน้าเครื่องหมาย: ตัวอย่างเช่น: // MARK: [ส่วนหัวของคุณ]

เพิ่มบรรทัดตัวคั่น: หากต้องการเพิ่มตัวคั่นด้านบนของคำอธิบายประกอบให้เพิ่มยัติภังค์ (-) หน้าส่วนความคิดเห็นของคำอธิบายประกอบ ตัวอย่างเช่น: // MARK: - [เนื้อหาของคุณ] หากต้องการเพิ่มตัวคั่นใต้คำอธิบายประกอบให้เพิ่มยัติภังค์ (-) หลังส่วนความคิดเห็นของคำอธิบายประกอบ ตัวอย่างเช่น: // MARK: [เนื้อหาของคุณ] -



0

เครื่องหมาย Pragma เป็นวิธีปรับปรุงความสามารถในการอ่านรหัสของคุณ ความคิดเห็น pragma จะปรากฏขึ้นเช่นแท็กบน Xcode jumpbar

//MARK:  <Your comment goes here>

ตัวอย่าง: ในรหัส

//MARK: Properties

// MARK: View Life cycle

//MARK: Helper methods

นี่คือลักษณะที่จะปรากฏในแถบกระโดด Xcode

ป้อนคำอธิบายรูปภาพที่นี่


คุณเพียงแค่ใส่มันในตำแหน่งที่ถูกต้องในไฟล์ของคุณ
varunrathi28
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.