Ошибка, связанная с выражением @autoreleasepool

#objective-c #ios #nsautoreleasepool

#objective-c #iOS #nsautoreleasepool

Вопрос:

Я загрузил пример кода с developer.apple.com вызывается SimpleGestureRecognizer и в main.m программа отправляет сбой, потому что программа не знает выражение @auoreleasepool

Сбой: неожиданный ‘@’ в программе. Я искал в Интернете, если с кем-то случается такая же проблема, но ни у кого не было такой же проблемы.

Знаете ли вы, почему эта программа не знает выражение @autoreleasepool? Моя версия Xcode — 3.2.6

Спасибо за вашу помощь и предположения в дальнейшем

Ответ №1:

@autoreleasepool была введена в LLVM 3.0, компилятор доступен в Xcode 4.2. Поскольку вы используете Xcode 3.2.6, у вас есть LLVM 1.6 и GCC, ни один из которых не распознает эту директиву.

Вы можете изменить код для использования NSAutoreleasePool вместо @autoreleasepool того, чтобы он строился с помощью Xcode 3.2.6. Например, заменить:

 @autoreleasepool {
    …
}
 

с:

 NSAutoreleasePool *pool = [NSAutoreleasePool new];
…
[pool drain];