aşağıdaki Objective-C kodu var:LLVM döngü optimizasyonu hatası mı? Benim uygulamada
-(void)layoutPages
{
NSMutableArray* sections = [NSMutableArray array];
[sections addObject:[[NSAttributedString alloc] initWithString:@"Hello world"]];
for (NSAttributedString* contentSection in sections) {
NSLog(@"%@",contentSection);
}
}
Konsol çıkışı: 2014-04-22 14:11:01.505 MyApp[24784:830b] Hello world{}
Ben -OS optimizasyonu kullanarak x86_64 mimarisi için derleme, LLVM sonra sessizce dışarı optimize 'contentSection' döngü değişkeni. -O0 kullandığımda, hata kaybolur.
(lldb) po contentSection
error: Couldn't materialize struct: the variable 'contentSection' has no location, it may have been optimized out
Errored out in Execute, couldn't PrepareToExecuteJITExpression
nasıl mümkün olabilir: Ben contentSection değişkenin açıklaması yazdırmaya çalıştığınızda Bu çıkış mı? Benim bakış açımdan, bir döngü değişkeni, döngü içinde kullanıldığında hiçbir zaman optimize edilmemelidir. Diğer insanların LLVM ile benzer bir sorunu olduğunu, ancak bir döngü değişkeniyle olmadığını gördüm. Bu bir derleyici hatası olabilir mi?
bir Ivar yerine aynı sonuç ile bu çalıştı @PeterLapisu –
Teşekkür bir özellik self.contentSections kullanmayı deneyin yaptı. – Sbhklr
'iVar' veya' @ property' ifadesini nasıl beyan ettiniz? Neler olabileceği, daha fazla vigyoların bellek yönetiminin '-Os' ve' _contentSections' ile yer almasıdır. – Rich