29

Xcode の自動インデントを処理するのに多くの時間を浪費していることに気づきました。設定に何か問題があるのではないかと尋ねなければなりません。基本的に、メソッド内のコードのインデントに時間を費やし、そのメソッド全体をコピーして貼り付けると、新しく貼り付けたメソッドには、元のメソッドに適用した空白が保持されません...

たとえば、配列のすべてのオブジェクトをインデントした top メソッドのスクリーンショットを次に示します。次に、メソッド全体を選択し、コピーして貼り付けました。めちゃめちゃ。

ここに画像の説明を入力

Xcode 4.4.1 を使用しています。設定は次のとおりです。

私のインデント設定

4

1 に答える 1

-4

意図したとおりに動作します。

…Objects:forKeys:これらは同じメソッド シグネチャの一部を形成するため、整列する必要があります。

新しいオブジェクト リテラル構文を使用すると、コードのフォーマットが簡単になる場合があります。

- (int)minBrokenPieces {
   NSDictionary *mapping = [NSDictionary dictionaryWithObjects:@[@"3", @"4", @"4", @"5", @"6", @"7", @"8"]
                                                       forKeys:[Note types]];
  [(NSString *)mapping[self.note.type] integerValue];
}

コード自体に関しては、これらの定数を 1 か所で定義し、ノート タイプを別の場所で定義するのは少し危険に思えます。また、NSNumbers で十分なのに、なぜ文字列を使用するのでしょうか?

(このコードは、この関数が 1 つのスレッドからのみ呼び出されることを前提としています)。

- (int)minBrokenPieces {
    static NSDictionary *mappings;
    if (!mappings) {
        mappings = @{
            noteType1  : @3,
            noteType2  : @4,
            noteType3  : @4,
            noteType4  : @5,
            noteType5  : @6,
            noteType6  : @7,
            noteType7  : @8,
        };
    }
    NSAssert(mappings[self.note.type] != nil, @"Used a note type for which there is no minBrokenPieces defined");
    return [mappings[self.note.type] intValue];
}
于 2012-11-09T22:39:02.030 に答える