Я уже подал радар (rdar://12311693, http://openradar.appspot.com/12311693) для следующей проблемы, но я думал, d, чтобы узнать, может ли кто-нибудь обнаружить ошибку в моем коде, которая может привести к сбою.
Следующий пример кода приводит к сбою из-за чрезмерного выпуска при построении с включенной оптимизацией компилятора (-Os), но не сбой при отключении оптимизации компилятора (-O0). Проект строится с помощью Xcode 4.4.1 (4F1003), компилятора Apple LLVM 4.0
Приложение сбой, когда num2 перевыполнен. Включите объекты Zombie, чтобы подтвердить, что это так.
// This crashes under -Os, but not under -O0
NSNumber *num1 = @((float)arc4random() / (float)UINT32_MAX);
NSNumber *num2 = @((float)arc4random() / (float)UINT32_MAX);
NSNumber *foo1 = num1;
NSNumber *foo2 = num2;
for (NSUInteger i=0; i<2; i++) {
NSLog(@"foo1: %p %@", foo1, foo1);
NSLog(@"foo2: %p %@", foo2, foo2);
// swap foo1 and foo2
foo1 = num2;
foo2 = num1;
}