假设我正在用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/