我发现自己浪费了很多时间来处理 Xcodes 自动缩进,我不得不问我的设置是否有什么问题?基本上,如果我花时间在一个方法中缩进代码,然后复制整个方法并粘贴它,新粘贴的方法不会保留我应用于原始方法的任何空白......
例如,这是一个截图,上面的方法我缩进了一个数组的所有对象,以便它们正确排列......然后我选择了整个方法,复制并粘贴,你可以看到下面的方法有所有的缩进弄乱。
我正在使用 Xcode 4.4.1,这是我的设置:
我发现自己浪费了很多时间来处理 Xcodes 自动缩进,我不得不问我的设置是否有什么问题?基本上,如果我花时间在一个方法中缩进代码,然后复制整个方法并粘贴它,新粘贴的方法不会保留我应用于原始方法的任何空白......
例如,这是一个截图,上面的方法我缩进了一个数组的所有对象,以便它们正确排列......然后我选择了整个方法,复制并粘贴,你可以看到下面的方法有所有的缩进弄乱。
我正在使用 Xcode 4.4.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];
}