Звучит так, что либо что-то выходит преждевременно, либо что-то неправильно связано с одной из ваших XIB. Если вы еще этого не сделали, вы можете ознакомиться с NSZombieEnabled, NSDeallocateZombies, NSEnableAutoreleasePool и NSAutoreleaseFreedObjectCheckEnabled. Это переменные среды, которые можно установить на панели «Аргументы» окна «Получить информацию».
Ради здравомыслия я добавил это в -applicationDidFinishLaunching моего AppDelegate:
#ifdef DEBUG
// account for environment value's actual value if set.
NSString *NSZombieEnabled = (getenv("NSZombieEnabled"))
? [NSString stringWithCString:getenv("NSZombieEnabled") encoding:NSASCIIStringEncoding]
: @"NO";
DLog(@"NSZombieEnabled = %@", NSZombieEnabled );
NSString *NSDeallocateZombies = (getenv("NSDeallocateZombies"))
? [NSString stringWithCString:getenv("NSDeallocateZombies") encoding:NSASCIIStringEncoding]
: @"NO";
DLog(@"NSDeallocateZombies = %@", NSDeallocateZombies );
NSString *NSEnableAutoreleasePool = (getenv("NSEnableAutoreleasePool"))
? [NSString stringWithCString:getenv("NSEnableAutoreleasePool") encoding:NSASCIIStringEncoding]
: @"YES";
DLog(@"NSEnableAutoreleasePool = %@", NSEnableAutoreleasePool );
NSString *NSAutoreleaseFreedObjectCheckEnabled = (getenv("NSAutoreleaseFreedObjectCheckEnabled"))
? [NSString stringWithCString:getenv("NSAutoreleaseFreedObjectCheckEnabled") encoding:NSASCIIStringEncoding]
: @"NO";
DLog(@"NSAutoreleaseFreedObjectCheckEnabled = %@", NSAutoreleaseFreedObjectCheckEnabled );
#endif
Иногда это избавляет меня от необходимости проверять эти переменные через интерфейс Xcode.