不要在objective-c中基于flag执行代码的某些部分

时间:2013-11-28 12:15:07

标签: ios objective-c

我在副项目中使用了一些我不想在此时执行的代码。 此外,我暂时不想删除或评论它。

有什么办法吗?所以我可以根据我的要求使其可执行或不可执行。

对于前。你有一个像facebook app这样的庞大项目,在生产发布的最后时刻,你会发现一个bug,在当前版本中,你不想执行一些代码,这些代码在你的项目中被许多地方使用。

3 个答案:

答案 0 :(得分:1)

您可以简单地添加if甚至else

if(yourCondition){
    //execute these parts only when the above 'yourCondition' satisfies
    ...
}

编辑:

正如你所说,把if-else放在一边是不好的做法。

然后你可以这样做(就像Apple那样):

使用#if, #else, #endif

来自NSView.h的一个例子是:

#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
enum {
    NSViewLayerContentsPlacementScaleAxesIndependently      =  0,
    ....
    NSViewLayerContentsPlacementTopLeft                     = 11
};
#endif

答案 1 :(得分:1)

您可以使用宏执行此操作。在宏观条件下包装您的代码,

#ifdef EXECUTE
  //Code
#endif

然后,如果您希望执行此代码,只需将宏定义为#define EXECUTE。如果不执行代码,则不要定义或注释掉#define语句。

在代码中使用此if-else检查的优点是,这些提供条件编译,即,如果未定义条件,则包含在条件内的代码将不包含在二进制文件中。

希望有所帮助!

答案 2 :(得分:1)

使用#ifdef#endif包裹不需要的部分。然后转到目标的Build Settings,找到Preprocessor Macros,仅为Debug模式定义变量。现在,只有Debug版本才会执行不需要的部分,Release版本没有代码部分。