理解Objective c enum声明

时间:2009-05-14 21:08:55

标签: iphone c objective-c enums

来自iPhone UIControl

UIControlEventAllTouchEvents      = 0x00000FFF,
UIControlEventAllEditingEvents    = 0x000F0000,
UIControlEventApplicationReserved = 0x0F000000,
UIControlEventSystemReserved      = 0xF0000000,
UIControlEventAllEvents           = 0xFFFFFFFF

现在我假设UIControlEventApplication是我可以用来指定自定义控件事件的'范围',但我不知道如何正确地执行它。仅当我分配0xF0000000时,控制事件才会正确触发。如果我指定了其他任何内容(0xF0000001),则控制事件在不应该发生时触发。

一些澄清:

enum {
    UIBPMPickerControlEventBeginUpdate = 0x0F000000,
    UIBPMPickerControlEventEndUpdate = // Which value do I use here?

};

我认为它是一个范围是基于文档。哪个说:

  

我假设这是因为文档说:可供应用程序使用的一系列控制事件值。

有人能帮我理解UIControl中使用的枚举声明的类型吗?

2 个答案:

答案 0 :(得分:13)

我认为0x0F000000是您为创建自己的控制事件而拥有的4位。

0x0F000000 = 00001111 00000000 00000000 00000000

所以任何组合:

0x00000001<<27 = 00001000 00000000 00000000 00000000
0x00000001<<26 = 00000100 00000000 00000000 00000000
0x00000001<<25 = 00000010 00000000 00000000 00000000
0x00000001<<24 = 00000001 00000000 00000000 00000000

你当然可以将这些一起创建新的:

0x00000001<<24 | 0x00000001<<25 = 00000011 00000000 00000000 00000000

所以在你的例子中:

enum {
    UIBPMPickerControlEventBeginUpdate = 0x00000001<<24,
    UIBPMPickerControlEventEndUpdate = 0x00000001<<25, ...
};

答案 1 :(得分:-1)

要使用枚举,您只需执行按位操作:

UIControlEventAllEditingEvents | UIControlEventApplicationReserved | UIControlEventApplicationReserved