2012-07-25 39 views
0

比方說,我有以下代碼:iOS中的UIControlEvents可以一起進行OR運算嗎?

[somevalue_field 
    addTarget:self 
    action:@selector(somevalue_fieldDidChange:) 
    forControlEvents:UIControlEventEditingDidEnd | UIControlEventTouchDragExit | 
        UIControlEVentTouchDragOutside ]; 

將這些UIControlEvents的按位或運算實際上是在結合它們的效果,這樣,如果這些事件的發生,在選擇的方法將火方面的合作?

或者是否會導致太多的位串在一起,以適應一個整數?

回答

5

是的,你可以或控制事件標誌在一起。

我想你可能會對如何按位或工作有點困惑。 ORing不會增加位數,只會增加設定位的數量。

當你看到這樣定義的標誌:

UIControlEventTouchDragOutside = 1 << 3, 
UIControlEventTouchDragExit  = 1 << 5, 
UIControlEventEditingDidEnd  = 1 << 18, 

它往往是一個線索,它的目的,他們可以一起進行或操作。

在二元這些標誌和OR的結果將是:

 
UIControlEventTouchDragOutside 00000000000000000000000000001000 
UIControlEventTouchDragExit 00000000000000000000000000100000 
UIControlEventEditingDidEnd 00000000000001000000000000000000 

Result of OR     00000000000001000000000000101000 

因此,大家可以看到,位在結果的數量仍然是相同的(32),這是一套剛剛數量改變的位。

谷歌「二進制算術」和「按位布爾運算符」的更多內容。

最後一點,蘋果docs for addTarget:action:forControlEvents說:

controlEvents 位掩碼指定爲被髮往 動作消息的控件的事件。請參閱「控制事件」瞭解位掩碼常量。

術語位掩碼意味着您可以將此調用的控制事件常量或在一起。

相關問題