Sun*_*hah 1 enums objective-c ios
我有不同的页面大小.我想使用枚举来选择页面大小.想那样的
typedef NS_ENUM(CGSize, SizeType) {
MAXSIZE=CGSizeMake(640, 1196),
MIDIUMSIZE=CGSizeMake(320, 590),
MINSIZE=CGSizeMake(160, 280)
};
Run Code Online (Sandbox Code Playgroud)
这是可能的?如果没有,那么最好的方法是什么,我需要在我的整个应用程序中使用这个组合值
一个enum在C(并因此在Objective-C)是一组整数值的,这就是为什么你不能有CGSize值作为它的成员.
相反,使用常量.最好的选择是看看Apple做了什么并模仿它.如果你看一下,CGGeometry.h你会发现各种常数的定义.
例如,CGSizeZero定义为
CG_EXTERN const CGSize CGSizeZero
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过在标头中声明一个常量来执行类似的操作
CG_EXTERN const CGSize kMaxSize;
Run Code Online (Sandbox Code Playgroud)
然后在实现中定义它
const CGSize kMaxSize = (CGSize){ 640, 1196 };
Run Code Online (Sandbox Code Playgroud)
作为奖励,您还可以为其定义类型同义词CGSize,例如:
typedef CGSize MySizeType;
Run Code Online (Sandbox Code Playgroud)
然后用它来声明常量和变量,例如
CG_EXTERN const MySizeType kMaxSize;
...
@property (nonatomic) MySizeType aSize;
Run Code Online (Sandbox Code Playgroud)
从技术角度来看,这并没有改变一点,但它在语义上更好,它基本上达到了相同的目的typedef enum(这恰好提供了一个方便的同义词int)
| 归档时间: |
|
| 查看次数: |
427 次 |
| 最近记录: |