That looks like a memory leak to me (but perhaps I am missing something). An object you allocate via alloc+init has a refcount of 1, the retain increases it to 2, but I couldn't find a corresponding second release.