NSThread detachNewThreadSelector:toTarget:withObject: retains its target, which in this case is self. Also, self is the delegate of a few things here, usually you don't want to retain delegates so if you've written those protocols check that you are not doing that.