Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/extensions/Variables/includes/ExtVariables.php on line 198
CAAtom - iPhone Development Wiki

CAAtom

From iPhone Development Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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.