假设我正在用Cocoa编写一个类来充当服务器的代理。为了表示连接的当前状态,请考虑以下枚举:

enum
{
    MyConnectionStatusDisconnected = 0,
    MyConnectionStatusConnecting,
    MyConnectionStatusConnected,
    MyConnectionStatusCount
};
typedef NSUInteger MyConnectionStatus;


我可能将其保存在我的代理类中,如下所示:

@interface ServerProxy : NSObject
{
    MyConnectionStatus connectionStatus;
}


很好,但是如果我想弄清楚用户对连接状态的理解怎么办?我可能有一个像这样的静态函数:

+(NSString*)statusStringForInt:(MyConnectionStatus)status;


至此,我很快就离开了面向对象编程的领域。

将这个枚举重构为类层次结构的最佳方法是什么?

最佳答案

我不会将其重构为类层次结构。相反,请使用NSString常量:

// foo.h
extern NSString *MyConnectionStatusDisconnected;


// foo.m
MyConnectionStatusDisconnected = @"Connection Status: Disconnected";


isEqualToString:将指针相等作为第一个测试,因此将很快。

然后,如果需要本地化,则可以在字符串文件中使用Connection Status: Disconnected

关于objective-c - 将枚举转换为类层次结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1344801/

10-10 20:36