【问题标题】:Why is Xcode auto indentation is so bad? And how can I make it any better?为什么 Xcode 自动缩进如此糟糕?我怎样才能让它变得更好?
【发布时间】:2012-09-04 00:03:18
【问题描述】:

我发现自己浪费了很多时间来处理 Xcodes 自动缩进,我不得不问我的设置是否有什么问题?基本上,如果我花时间在一个方法中缩进代码,然后复制整个方法并粘贴它,新粘贴的方法不会保留我应用于原始方法的任何空白......

例如,这是一个截图,上面的方法我缩进了一个数组的所有对象,以便它们正确排列......然后我选择了整个方法,复制并粘贴,你可以看到下面的方法有缩进都搞砸了。

我使用的是 Xcode 4.4.1,这是我的设置:

【问题讨论】:

  • 粘贴时使用 Shift-Option-Command-V 而不是 Command-V,您的格式将被保留。
  • 你会喜欢这个技巧:在函数范围内创建一行代码。确保它是半长的。在它下面的行上放一个 { 后,关闭与否都无所谓。然后,将光标放在第一行的末尾,按空格(或制表符),然后按 Enter。我只是喜欢重现那个​​错误。如果您不明白,请添加更多字符,但不要使该行足够长以超过新的换行符。您的光标现在将出现在 { 的前面和下方,但文本显示在右侧区域。无害但有趣的一个,我可以在 XCode 4 上重现一个有趣的派对炫耀技巧

标签: xcode indentation code-formatting


【解决方案1】:

按预期工作。

…Objects:forKeys: 应该对齐,因为它们是同一方法签名的一部分。

如果您使用新的对象文字语法,格式化代码可能会更容易:

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

至于代码本身,在一个地方定义这些常量而在其他地方定义注释类型似乎有点危险。另外,既然 NSNumbers 就足够了,为什么还要使用字符串呢?

(此代码假定此函数仅从一个线程调用)。

- (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];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多