Ошибка компилятора 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 Он просто не может работать с другими компиляторами, которые вы пробовали.

Другие вопросы по тегам