自动将评论转换为#pragma mark

时间:2014-11-26 21:41:21

标签: objective-c xcode c-preprocessor

我一直希望使用以下内容对协议实现代码进行可视化分割:

// UIApplicationDelegate ===========================================================================
- (BOOL) application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)options {

但是,Xcode中的#pragma标记功能非常有用。我也喜欢添加分界线的能力。但这意味着我的代码现在看起来像:

// UIApplicationDelegate ===========================================================================
#pragma mark -
#pragma mark UIApplicationDelegate

- (BOOL) application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)options {

这变得非常笨拙。我真的很喜欢标有嵌入代码本身的协议的漂亮(通常)绿线,但我也喜欢pragma mark实用程序。

是否有使用预处理器#define或其他此类命令自动将第一个转换为第二个?

2 个答案:

答案 0 :(得分:3)

Clang / Xcode也会识别// MARK:,其目的与#pragma mark相同。 (另外,这是Swift中唯一的样式,因为该语言没有预处理器。)所以如果你喜欢绿色,你可以这样做:

// MARK: - UIApplicationDelegate
// ========================

如果您正在寻找一种方法来自动将之前表示法的所有用法转换为// MARK#pragma,我建议使用一个很好的正则表达式查找/替换实用程序,其中也有很多要在这里列出。

答案 1 :(得分:1)

您可以从宏生成#pragma,但文本编辑器除非进行宏扩展,否则不会看到它。

_Pragma“运算符”被定义为与#pragma指令具有相同的效果。

#define PRAGMA_STR( TEXT ) _Pragma( # TEXT )
#define INDEX_MARK( NAME ) _Pragma("mark -") PRAGMA_STR(mark NAME)

它不会在评论中起作用,但您可以执行类似

的操作
INDEX_MARK( UIApplicationDelegate ) // =======================================

...如果编辑看了宏,它可能没有。