Xcode 小技巧:快速查看预处理后的源码

2021-03-18 09:48:17 浏览数 (1)

本文会分享以下内容:

  • 通过开启或者关闭 module 相关的配置,查看 Xcode 预处理操作 后的代码差异
  • 预处理操作 失败的解决方案

一、 Enable Modules

Module 是 编译器用于解决头文件引用导致重复编译等问题的方案。

通过开启 Enable Modules 配置开关,可以大幅度的降低编译耗时

image

二、对源码进行预处理操作

本节会演示关闭 Enable Modules 配置开关后,下面几行简单的代码经过 预处理操作 后会变成什么

代码语言:javascript复制
//
//  SunFrameB.m
//  SunFrame
//
//  Created by 酷酷的哀殿 on 2021/3/1.
//

#import "SunFrameB.h"

#import <Foundation/NSString.h>

@implementation SunFrameB

@end

image

按照以下两种方式之一对 SunFrameB.m 文件进行 预处理 操作

预处理方案一

方案一:通过 Product 按钮,依次点击Perform ActionPreprocess “SunFrameB.m”

image

预处理方案二

依次点击 Navigate to Related ItemsPreprocess 按钮

image

预处理操作 后的代码

经过 预处理操作 后的代码如下所示:

image

我们可以注意到,经过 预处理 操作 后, SunFrameB.m 文件膨胀到 31174

三、开启 Enable Modules 配置开关后进行预处理

Xcode 配置中开启 Enable Modules 配置

image

SunFrameB.m 进行预处理操作预处理操作 后代码长度只有 41

image

对比两种方案,我们可以注意到开启 Enable Modules 配置开关后,预处理的源码可以大幅度的减少

四、预处理操作 失败的解决方案

很多朋友按照上面的方案对原源码预处理时,可能会遇到 Unable to Generate Content 的问题

image

对应的 预处理操作 报错信息如下所示:

'AppDelegate.m' is not a member of any targets in the current scheme that build for profiling

image

该问题背后的原因是 Xcode 无法找到合适预处理参数对源码进行预处理操作。对应的解决方案也很简单:

  1. 按照上次分享的 Xcode 小技巧:如何获取源码文件对应的 target? 找到源码文件对应的 target: ImageView

image

  1. 切换 Target

image

  1. 重新进行 预处理操作

image

通过提供合适的 target,我们可以让 Xcode 找到合适的参数对源码进行 预处理操作 了。

0 人点赞