2011-07-28 367 views
245

Xcode中#pragma標記的用途是什麼?他們在.m文件中的位置是否很重要?一些#pragma應該比其他所有人都先出現嗎?#pragma標記的意義​​是什麼?爲什麼我們需要#pragma標記?

  • 他們必須在場嗎?
  • 可以添加新標記嗎?他們爲什麼會這樣?是什麼導致了它?
  • 刪除商標是否有害處?會有人想要嗎?
+4

檢查鏈接:http://cocoasamurai.blogspot.com/2006/09/tip-pragma-mark-organizing-your-source.html – rptwsthi

+0

我個人不喜歡他們。說真的,你想要考慮你必須始終放置一個方法的地方?有更重要的事情要保持組織,比如關注單責任原則 –

+1

對於迅捷語言#Pragma標記將不起作用。使用#MARK或#FIXME或#TODO檢查此鏈接的更多信息http://stackoverflow.com/a/33040068/1753005 –

回答

286

#pragma mark指令在Xcode中顯示在直接訪問方法的菜單中。他們完全沒有影響該計劃。

例如,將它與Xcode 4一起使用會使這些項目直接顯示在跳轉欄中。

有一個特殊的pragma mark -它創建一條線。

enter image description here

52

#pragma mark被用於標記組的方法,所以你可以很容易地找到並檢測從跳轉欄的方法。當您的代碼文件達到大約1000行時,它可以幫助您,並且您想通過跳轉框中的類別快速找到方法。

在一個很長的程序中,很難記住並找到方法名稱。所以編譯標記允許您根據他們所做的工作對方法進行分類。例如,您爲表視圖協議方法,AlertView方法,初始方法,聲明等標記了一些標記。

#pragma mark是XCode的工具,但它對您的代碼沒有影響。它只是幫助在編碼時更容易找到方法。

18

簡而言之,我們可以說#pragma mark -用於分類方法,因此您可以輕鬆找到您的方法。這對長期項目非常有用。

10

當我們有一個很大/很長的班級說超過100行代碼時,我們無法在監視器屏幕上看到所有內容,因此我們無法看到班級的概述(也稱爲文檔項目)。有時我們想看看我們班的概況;它的所有方法,常量,屬性等一目瞭然。您可以按XCode中的Ctrl + 6查看您的課程概覽。你會得到一個彈出式窗口又名跳轉欄。

默認情況下,此跳轉欄沒有任何桶/節。這只是一個長長的清單。 (雖然我們可以在跳轉欄出現時開始鍵入,並且會在跳轉欄項目中進行搜索)。這裏需要pragma mark

如果你想在跳轉欄中創建段,那麼你可以使用帶有相關描述的雜註標記。現在參考有關快照的問題。 '查看lifeCycle'和'專用部分'是由pragma mark創建的部分s

7

在搜索doc以指向編譯器的編譯指示是如何編譯指示時,我發現這個NSHipster article可以很好地完成這項工作。

我希望你會喜歡閱讀

12

我想補充我一直在尋找的信息:pragma mark是Xcode中特定的,所以如果你處理,你在打開不同的IDE一個C++項目,它沒有那裏有任何影響。例如,在Qt Creator中,它不會爲方法添加類別,也不會生成任何警告/錯誤。

編輯

#pragma是來自C編程語言中的預處理指令。它的目的是爲編譯器指定實現相關的信息 - 也就是說,每個編譯器可以選擇按照需要來解釋這個指令。也就是說,它被認爲是不會改變/影響代碼本身的擴展。所以編譯器可能會忽略它。

Xcode是一個IDE,它利用#pragma並以其特定方式使用它。關鍵是,#pragma不是Xcode,甚至Objective-C都是特定的。

1
#pragma mark - NSSecureCoding 

「編譯指示」的主要目的是供開發人員參考。 enter image description here

您可以在數以千計的編碼行中輕鬆找到方法/函數。

+0

所以我可以刪除該行?它浪費了我的大腦空間。 – YumYumYum

+1

刪除** #pragma-mark **不會影響您的代碼的任何功能,但是您的代碼可能會失去其可讀性。如果你真的不想要,你可以刪除它。 –

+0

太棒了!我真的很討厭#編譯標記和所有其他與編譯/構建/執行無關的東西。 – YumYumYum