RN: 创建iOS工程代码的indent问题

起因

使用最新版RN(0.33)来创建工程, 大家可以发现, OC 代码的退格变成了两个空格.
如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSURL *jsCodeLocation;
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
moduleName:@"Mark"
initialProperties:nil
launchOptions:launchOptions];
rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
return YES;
}

无论你回车或者 tab 或者格式化(右键/Structure/Re-Indent)代码, 会发现, 都是这种调调.

面对这突如其来的变化, 我开始觉得有点淡淡的忧伤.

对于一直使用 tab width = 4 的我来说, 无法忍受. 必须改过来.

思考

打开 Xcode 的 preferences, 看到其『设置』正常的不要不要的.

所以可以断定不是 Xcode 的问题.

1

因为升级了 Xcode 到最新版 Xcode8, 还以为是 Xcode8 的 bug, 打开之前的 React Native 工程或者其他 Xcode 工程, 就没有这个「蛋疼」的问题.

最终猜想是工程配置文件引起的…

解决

既然和 Xcode 没有关系, 那么问题就一定出现在配置文件上面.

罪魁祸首 project.pbxproj

1
2
3
indentWidth = 2;
sourceTree = "<group>";
tabWidth = 2;

修改为:

1
2
3
indentWidth = 4;
sourceTree = "<group>";
tabWidth = 4;

或者直接删除:

1
2
indentWidth = 2;
tabWidth = 2;

关闭工程, 重启 Xcode 就可以了.

坚持原创技术分享!