Ошибка компилятора XCode 4.2
Когда я создаю новый проект с XCode 4.2 (например, приложение Single View для iOS), файл main.m в папке "Supporting Files" выглядит следующим образом:
#import <UIKit/UIKit.h>
#import "iiiAppDelegate.h"
int main(int argc, char *argv[])
{
int retVal = 0;
@autoreleasepool {
retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([iiiAppDelegate class]));
}
return retVal;
}
Настройка компилятора (в настройках сборки) - это Apple 3.0 LLVM. Когда я изменяю его на GCC 4.2 или GCC4.2 LLVM, он показывает ошибки с main.m.
Здесь нет @autoreleasepool
...
Какие настройки в моем XCode могут вызвать такие проблемы? Почему стандартный компилятор для новых проектов Apple 3.0LLVM вместо системного компилятора по умолчанию (GCC4.2)??
2 ответа
Чтобы ответить на ваш первый вопрос:
Какие настройки в моем XCode могут вызвать такие проблемы?
Сам компилятор является настройкой. Измените его на LLVM 3.0 и больше никаких проблем
Чтобы ответить на ваш второй вопрос:
Почему стандартный компилятор для новых проектов Apple 3.0LLVM вместо системного компилятора по умолчанию (GCC4.2)??
LLVM 3.0 - системный компилятор по умолчанию для Xcode 4.2.
Я думаю, что вы на самом деле спрашиваете, как исправить ошибку, когда не используете LLVM 3.0. Для этого вы хотели бы заменить @autoreleasepool
с NSAutoreleasePool
вот так:
int main(int argc, char *argv[]) {
int retVal = 0;
// @autoreleasepool {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([iiiAppDelegate class]));
[pool drain];
// }
return retVal;
}
@autoreleasepool
это новая функция, добавленная в LLVM 3.0 Он просто не может работать с другими компиляторами, которые вы пробовали.