XCode /新文件/头文件 - >默认实现

时间:2017-05-22 21:24:18

标签: ios objective-c xcode

在XCode 8中,当我向我的项目添加一个新的iOS头文件时,它已经包含此代码。

#ifndef SomeCoolWidget_h
#define SomeCoolWidget_h

#endif /* SomeCoolWidget */

我是否有充分的理由不删除这些指令而只是按照惯例...

@interface SomeCoolWidget
...
@end

我从来没有在我们的代码中留下那些编译器指令,它从来没有引起过问题,但如果没有问题,我就会想知道为什么该模板是每个新头文件的默认值。

2 个答案:

答案 0 :(得分:1)

@interface SomeCoolWidget...是" Cocoa Touch Class"。它有一个额外的模板,它会创建一个Class.hClass.m文件:

对于纯C头文件,您需要预处理器指令。您可以在this answer中找到一些背景原因。

答案 1 :(得分:1)

这些被称为macro guards,基本上预处理器正在检查项目中是否包含SomeCoolWidget,如果包含它,则返回空白头文件。

另一个想法是当你有一堆相关的头文件要防止递归时。

让我们说A.h - >包括B.h然后B.h - >包括A.h,你不希望在你的代码中......

最后我们假设您有一个Play.h和一个Record.h,您可以将它们放在SomeCoolWidget标题中,然后使用SomeCoolWidget标题来播放和录制其他标题类。

#import "Play.h"
#import "Record.h"

所以@interface SomeCoolWidget的用法与SomeCoolWidget.h的用法不同。你需要选择适合你需要的东西