我一直希望使用以下内容对协议实现代码进行可视化分割:
// 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
或其他此类命令自动将第一个转换为第二个?
答案 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 ) // =======================================
...如果编辑看了宏,它可能没有。