30 Sep 2011
Mistakes Were Made: Description Isn’t Enough
Turns out po calls debugDescription, not description. Oops. A correction to an earlier blog post, with the fix that keeps CALayer subclasses from hijacking your custom output.
21 Sep 2011
All in the Timing: Keeping Track of Time Passed on iOS
Why your freemium game’s clock is so easy to cheat, and what you can (maybe) do about it. A deep dive into absolute vs. relative time on iOS, and a hybrid server-based approach to keep cheaters honest.
7 Sep 2011
CFTree Is Leaking It’s Children
CFTree’s docs say releasing the root destroys its children. The docs lie. A late-night debugging adventure with proof via Instruments, plus a manual teardown workaround.
29 Aug 2011
Why CALayer’s contents property is typed as id, and the neat trick that makes possible. Spoiler: you can clone a layer’s contents — even a CABackingStore — without ever touching a CGImageRef.
24 Aug 2011
The view on screen isn’t the view your code talks to. Here’s what Core Animation is really doing. Learn about the model/presentation layer split and how to use presentationLayer to animate from a view’s actual on-screen position.
22 Aug 2011
Integers in Your Collections (NSNumber’s not my friend)
Skip NSNumber and use Core Foundation to store integers in collections, 100x faster. A deep dive into CFArray and CFDictionary callbacks that makes the whole thing surprisingly painless.
15 Aug 2011
Quick Tip: Drawing Right Side Up With Core Text
Why Core Text draws everything upside down on iOS and how to fix it. A quick walkthrough of context transforms, text matrices, and why CGContextSetTextMatrix alone won’t save you.
1 Aug 2011
Mistakes Were Made: Initialize Your Locals
An uninitialized float worked fine in debug and shipped a bug to the App Store. The fix is a compiler warning you should turn on right now — plus a lesson in why zeroing your locals matters.
27 Jul 2011
CALayers v. CGLayers, or, Which Layer, Player?
CALayer and CGLayer sound related. They’re not. Here’s why you should ignore CGLayer on iOS. A quick breakdown of what each layer type actually does and why CGLayer’s desktop advantages don’t carry over.
26 Jul 2011
Override description on your classes and stop staring at memory addresses in the console. A beginner-friendly walkthrough of making NSLog and GDB actually useful for your custom objects.
25 Jul 2011
Lion’s reversed scrolling isn’t broken — you’re just thinking about it wrong. A history of scroll wheels, broken metaphors, and why moving the content instead of the scrollbar actually makes sense.