Почему я вижу сообщение о том, что NSAutoreleasePool недоступен? - PullRequest
3 голосов
/ 14 января 2012

Любая идея, почему я получаю эти сообщения:

NSAutoreleasePool недоступен: недоступен в режиме автоматического подсчета ссылок

ARC запрещает явную отправку сообщения 'release'

в этом коде:

#import <UIKit/UIKit.h>

int main(int argc, char *argv[]) {

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}

Ответы [ 3 ]

7 голосов
/ 14 января 2012

Да, у вас включен автоматический подсчет ссылок, который не позволяет вам явно использовать 'release'. Вам нужно либо отключить ARC, либо изменить основной метод, чтобы он выглядел так:

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}
7 голосов
/ 14 января 2012

Это потому, что вы компилируете с автоматическим подсчетом ссылок.Вам нужно использовать другую конструкцию с ARC:

@autoreleasepool {
    // Your code
}

Другой вариант - отключить ARC для определенного файла .

0 голосов
/ 04 февраля 2012

Под целями-> Настройки сборки-> Apple LLVM Complailer 3.0

Objective-C Сборка мусора (изменение на) Поддерживается [-fobjc-gc]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...