CAAtom refers to a string for identification in QuartzCore. As of 3.1, there are over 300 internal atoms.
Converting atoms to and from strings
Signature | NSString* CAAtomGetString(uint32_t atomicValue);
|
---|---|
Available in | 2.0 – |
Signature | uint32_t CAInternAtom(NSString* atommicString);
|
---|---|
Available in | 2.0 – |
There are only two exported C functions for CAAtom, CAAtomGetString() and CAInternAtom(), which convert a CAAtom between an integer and its corresponding string value. Most internal code in QuartzCore is identified using atoms. For example, a portion of disassembled code may read:
-[CAGradientLayer setLocations:]: ; +00000 0008d9cc stmdb sp!,{r7,lr} +00004 0008d9d0 add r7,sp,#0x0 +00008 0008d9d4 mov r1,#0xad +0000c 0008d9d8 bl CALayer_setter_kCAValueCopiedPointer +00010 0008d9dc ldmia sp!,{r7,pc} ; return
Here, the magic number 0xAD is in fact an atom, which is unsurprisingly the value "locations":
cy# CAAtomGetString(0xad)
"locations"
The CAAtom of 0 always returns <nil>, and that of an undefined atom is <unknown>. Custom atom values are always larger than the built-in ones.
External links
- dump_stuff.py script to dump internal CAAtom's from the QuartzCore binary.