Objective-C Bitmask Enumeration Essentials
pumpmybicep.com
pumpmybicep.com
I suppose that Cocoa uses bitmasks fairly often, but this article could have been titled "Working With Bitmasks in C" and it would have been just as accurate.
You should take care if you store result of this in a BOOL (or pass it to a method or function that takes a BOOL). BOOL is only char big and plenty of common Cocoa bitmasks don't have any bits set in that range. For example NSEventMaskEndGesture is (1<<20).
NSEventMask mask = NSEventMaskEndGesture;
BOOL end = mask & NSEventMaskEndGesture;
if (!end) NSLog(@"Oops"); BOOL end = mask & NSEventMaskEndGesture ? YES : NO; BOOL end = !! (mask & NSEventMaskEndGesture);
Like a little pair of surprised eyes.Also works for pointers:
BOOL hasError = !! errorObj;