如果你以为这是个标题党,那你就错了。今天的内容就是接着昨天的话题讲Objective-C。
想听扯淡的等明天吧。
2、枚举类型的改进
在OS X v10.5之前,我们如何在Objective-C中定义一个枚举类型呢?如下:
typedef enum {
ObjectiveC,
Java,
Ruby,
Python,
Erlang }
Language;
这种写法简单明了,用起来也不复杂,但是有一个问题,就是其枚举值的数据范围是模糊的,这个数值可能非常大,可能是负数,无法界定。
在OS X v10.5之后和iOS中,你可以这样写:
enum {
ObjectiveC,
Java,
Ruby,
Python,
Erlang
};
typedef NSUInteger Language;
这种写法的好处是,首先这个枚举的数据类型是确定的,无符号整数。其次由于我们采用了 NSUInteger,可以不用考虑32位和64位的问题。带来的问题是数据类型和枚举常量没有显式的关联。
现在,你可以这样写枚举了:
typedef enum Language : NSUInteger{
ObjectiveC,
Java,
Ruby,
Python,
Erlang
}Language;
在列出枚举内容的同时绑定了枚举数据类型NSUInteger,这样带来的好处是增强的类型检查和更好的代码可读性。
当然,对于普通开发这来说,枚举类型可能不会涉及到复杂的数据,使用之前的两种写法也不会有什么大问题。