你如何调整Xcode的Objective C参数的自动缩进?

时间:2011-11-24 07:23:58

标签: objective-c xcode4 formatting indentation auto-indent

以下是我的iOS应用中的一小段代码:

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Do you like my hat?"
                                                    message:@"If so, please help spread the word by rating our app now?"
                                                   delegate:nil
                                          cancelButtonTitle:@"No Thanks"
                                          otherButtonTitles:@"Sure!", @"Maybe Later", nil
                          ];

为什么Xcode缩进行如此血腥?作为一个旧的Perl,Ruby和JavaScript猴子,我更倾向于手动缩进它:

    UIAlertView *alert = [[UIAlertView alloc]
        initWithTitle:     @"Do you like my hat?"
        message:           @"If so, please help spread the word by rating our app now?"
        delegate:          nil
        cancelButtonTitle: @"No Thanks"
        otherButtonTitles: @"Sure!", @"Maybe Later", nil
    ];

因此参数名称和值都是左对齐的,并且只缩进一个级别(对我来说是4个空格)。这使用了更少的屏幕空间,而且我不太可能在MacBook Air上处理包裹线(这使得最右边的缩进内容甚至更难阅读)。

但是,我认为Apple有一些理由更喜欢第一种方法,因此有这样的Xcode缩进。或者有吗?

所以我有两个问题:

  • 您更喜欢在Objective C代码中缩进方法参数吗?
  • 如何使用您喜欢的缩进样式调整Xcode格式?

不要试图在这里开始圣战;我对Objective-C程序员中的最佳实践,Xcode如何帮助这些实践,以及找出Xcode的默认方式是否有充分的理由更加好奇。


更新:评论者和回答指出默认格式将冒号对齐。我应该记得在张贴之前,因为我当然注意到了它,当最长的项目没有缩进时,它看起来很漂亮。但我发现,通常情况下,最长的项目 缩进了很多。例如:

UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"Do you like my hat?"
                                message:@"If so, please help spread the word by rating our app now?"
                               delegate:nil
                      cancelButtonTitle:@"No Thanks"
                      otherButtonTitles:@"Sure!", @"Maybe Later", nil
                      ];

为什么?即使我希望它们在冒号处对齐(​​我经常手工格式化它们),但是将它们缩进这么多似乎很愚蠢。为什么它坚持缩小开放结肠的水平?为什么不只是一个缩进级别,结束括号,以显示缩进“阻止”的结束?例如:

UIAlertView *alert = [[UIAlertView alloc]
        initWithTitle:@"Do you like my hat?"
              message:@"If so, please help spread the word by rating our app now?"
             delegate:nil
    cancelButtonTitle:@"No Thanks"
    otherButtonTitles:@"Sure!", @"Maybe Later", nil
];

这似乎比the Google style guide's line length recommendation更好,不是吗?

有没有办法调整Xcode以这种方式格式化参数?

2 个答案:

答案 0 :(得分:5)

1)当给出多个参数时,Objective-c缩进约定在冒号处对齐。

例如

功能:

- (void)functionWithOne:(NSString *)one two:(NSString *)two tree:(NSString *)three;

必须格式化为:

- (void)functionWithOne:(NSString *)one 
                    two:(NSString *)two 
                  three:(NSString *)three;

我来自Java,起初我很难习惯。但尝试不同几次后,这真的是最好的方式。

2)我不认为(我不确定)你可以在xcode中改变它。 Apple的惯例非常明确。

编辑: 调用。我个人从第一个参数开始,并将其余部分对齐:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Do you like my hat?"
                                                message:@"If so, please help spread the word by rating our app now?"
                                               delegate:nil
                                      cancelButtonTitle:@"No Thanks"
                                      otherButtonTitles:@"Sure!", @"Maybe Later", nil];

答案 1 :(得分:3)

我不确定如何在Xcode中对其进行格式化,但代码格式化工具有两个选项:

  1. 使用Uncristify,有一个GUI工具来配置它:UncrustifyX
  2. 使用AppCode,Jetbrains的iOS / OSX IDE - 它具有可配置和内置格式。见截图。
  3. AppCode code formatting tool