Jeremy's suggestion for a stop in the debugger is a good one.
There's a really quick way to investigate freezing (or any performance issue), especially when it's not easy to reproduce. You should have a convenient terminal (so you will need to work in the iOS simulator or in Mac OS X, and not on the iOS device).
When the freeze occurs, go to the terminal and run:
sample YourProgramName
(If your program name has quotation marks, such as sample "My Awesome Game" .) The output from sample is a log showing where your program is wasting time, and if your program is actually hanging, it will be pretty obvious which functions get stuck .
Aaron golden
source share