关于iphone:如何在我的代码中创建kMyCustomName = 1和kMyOtherCustomName = 2全局?

How do a make a kMyCustomName = 1 and kMyOtherCustomName = 2 global in my code?

本问题已经有最佳答案,请猛点这里访问。

有以下功能:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
+ (int)isCorrectOnServer:(int)num {

// some code performs here...

if (this)
{
    result = 2;
}
else if (this2)
{
    result = 1;
}
else
{
    result = 0;
}

return result; }

我想它的回报,而不是两个这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
+ (int)isCorrectOnServer:(int)num {

// some code performs here...

if (this)
{
    result = kOnServer;
}
else if (this2)
{
    result = kWrongType;
}
else
{
    result = kNotOnServer;
}

return result; }

所以在我的代码中的任何地方可能只是电话:

1
if ([Helper isCorrectOnServer:276872] == kOnServer)

让我的两个代码的清洁和没有显示0,1,2,或作为结果。什么是最好的方式去做这个吗?


当有疑问的时候,看看苹果是怎么做的。查看uikit中的任何头文件,您将看到枚举被用于具有有限数量选项的任何类型的值。

只需将其放入头文件:

1
2
3
4
5
typedef enum {
    MYCustomTypeOne,
    MYCustomTypeTwo,
    MyCustomTypeEtcetera
} MYCustomType;

使用正确的枚举over defines允许您这样定义一个方法:

1
+(BOOL)isCustomTypeCorrectOnServer:(MYCustomType)type;

然后,参数可以通过xcode自动完成。例如,如果您使用开关案例中的值,编译器可以做出更好的假设。


1
2
#define kMyCustomName 1
#define kMyOtherCustomName 2

在它们将被使用的范围内,正如Felipe Sabino所说,为了使它们真正全球化,它们应该在前缀头中。


将内容添加到项目的前缀头文件中,通常命名为prefix.pch

或者,更干净的解决方案是创建一个contants文件,比如contants.h,并将该文件包含在前缀头文件中。

前缀.pch

1
#include Contants.h

容器.h

1
2
#define kMyCustomName 1
#define kMyOtherCustomName 2