Xcodeはリージョンをサポートしていますか?
-
08-07-2019 - |
質問
Xcodeは、任意のコードの折りたたみのためのVisual Studioスタイルの #region
ディレクティブに似たものをサポートしていますか?
解決
いいえ、Xcodeで定義されたさまざまなスコープレベルでのみコードを折りたたみできます。
ただし、小さなトリックを使用して、機能メニューから簡単にナビゲートできます。
#pragma mark
マークに続くラベルが機能メニューに表示されるグループを作成できます。ラベルがハイフンの場合、機能メニューにセパレータが挿入されます。
また、コメント内の次のラベルが機能メニューに表示されます。
// MARK:
// TODO:
// FIXME:
// !!!:
// ???:
明らかに、#pragmaマークは実際には移植性がないため、移植可能なアプリケーションを構築していて、理解できない#pragmaディレクティブを無視しないコンパイラーで動作する必要がある場合、コメントスタイルマーク適切な代替手段です。
他のヒント
これのために地獄に行くつもりですが、ここに行きます:
所定のファイルの先頭に、
#define FOLD 1
何かを折りたたみたい場合は、次のようにifブロックでラップします:
if(FOLD) {
// your code to hide
// more code
}
これにより、折りたたむことができます。
それは、あなたが最も望む場所、つまり、関数やメソッドのグループの周りでは機能しません。
内部の条件やループのない長い線形メソッド内では有用かもしれませんが、そのようなメソッドは一般的なMac OS X UIコードでは一般的ではありませんが、大きな数値またはグラフィックを処理するコードを書いている場合はグループ化に役立ちます。
そしてif(fold)は完全に不要です。メソッドまたは関数内で中括弧を使用するだけで、Xcodeはそれらを折りたたみます。
この方法で試してください:
//region title1
{
//region Subtitl1
{
}
//region Subtitl2
{
}
}
そのようにすることができます:
.Netスタイルのリージョンをサポートしない場合、すべての関数を同時に折りたたむことができるのが次善策です。
command - option - shift -左矢印 すべてを折りたたみます。
command - option - shift -右矢印 すべてを展開します。
Xcodeは、折りたたまれた関数の最後の状態を記憶します。
目的のコードを括弧{}内に入れると、折りたたみゾーンになります。
ただし、括弧は変数のスコープも定義するため、このコードではこれらの括弧の外で使用される変数宣言を使用しないでください。
今見つけた素敵な解決策:
プロジェクトを1つの大きな名前空間に配置します。 ソースファイルの個々のセクションについて、このネームスペースを閉じて再度開きます。
namespace myproj { // members of class MyClassA
void MyClassA::dosomething()
{
}
void MyClassA::dosomethingelse()
{
}
} // members of class MyClassA
namespace myproj { // members of MyClassB
void MyClassB::dosomething()
{
}
void MyClassB::dosomethingelse()
{
}
} // members of MyClassB