Wi-Fi参考iOSios

Xcode中的`Preprocessor Macros`的使用

2018-11-21  本文已影响61人  Alfred_小乐

先说为什么要用这个宏,当一个工程可能根据需求需要需要接入不同的渠道,而每个渠道的大部分代码相同的时候,就可以通过建立不同的target来解决这个问题,这是后就可以在每个target设置对应的预编译宏,这样可以在一些公用代码文件中通过宏来区分代码的用处。

如何使用Preprocessor Macros

先准备一个两个Target的工程模拟一下需求

首先我们创建一个Dmeo,给Demo的target copy一个target。选中Demo的Target+D拷贝一个Target

图1

将复制的target改为TargetTest

图2

复制target后xcode会自动复制一个对应的info.plist,将复制的plist文件改一个对应的名字

图3

点击TargetTesttarget选择General->Choose info.plist File...选中刚才的plist

图4

更改Scheme,点击Manage SchemesTargetTest的Scheme改成TargetTest.

以上改名只是为了好区分 <( ̄︶ ̄)>
准备工作做完。

TargetTest设置对应的宏

选中TargetTest,点击Build Settings选择Preprocessor MacrosTargetTest增加一个对应的宏TARGETTEST

图5

好了,这样宏就设置好了,可以在代码中使用了😁

使用宏

在ViewController.m文件中写下如下代码测试

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self doSomethings];
}

- (void)doSomethings
{
#if TARGETTEST
    [self test_targetTest];
#else
    [self test];
#endif
}

#if TARGETTEST
- (void)test_targetTest
{
    NSLog(@"调用了<%s>",__func__);
}
#else
- (void)test
{
    NSLog(@"调用了<%s>",__func__);
}
#endif

@end

分别选中不同的Target运行

MacroDemo运行如下:

MacroDemo[2886:115549] 调用了<-[ViewController test]>

TargetTest运行如下:

TargetTest[2909:116783] 调用了<-[ViewController test_targetTest]>
上一篇下一篇

猜你喜欢

热点阅读