Предупреждение контроллера корневого представления после преобразования в ARC - PullRequest
1 голос
/ 18 декабря 2011

Я конвертирую свою игру opengl в ARC и запускаю это сообщение об ошибке / предупреждении при запуске приложения:

Ожидается, что приложения будут иметь контроллер корневого представления в конце запуска приложения.

Я не использую nib или xib файлы для создания моих представлений или окон. Все отлично работает в коде без дуги (и уже пару лет).

После ошибки / предупреждения игра запускается и работает очень хорошо, но я хотел бы знать, что вызывает это, поскольку это может вызвать проблемы в будущем.

Полагаю, что теперь что-то неправильно сохраняется из-за дуги, но я не могу понять, что именно. Есть идеи? Вот как я создаю свои представления и окно opengl.

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    [window setUserInteractionEnabled:YES];
    [window setMultipleTouchEnabled:YES];

    glView = [[EAGLView alloc] initWithFrame:[UIScreen mainScreen].bounds];

    [window addSubview:glView];
    [window makeKeyAndVisible];

    [glView performSelectorOnMainThread:@selector(startMainGameLoop) withObject:nil waitUntilDone:NO]; 

    return YES;
}

и ...

@interface GameAppDelegate : NSObject <UIApplicationDelegate> 
{
    UIWindow *window;
    EAGLView *glView;
}

Ответы [ 3 ]

2 голосов
/ 19 декабря 2011

Сообщения "Applications are expected to have a root view controller at the end of application launch." всплывают для многих людей, не устанавливающих свойство rootViewController в свойстве окна их делегата приложения в iOS5 на Xcode 4.2. (не зависит от ARC)

Вопрос о том, почему это сообщение появляется, был размещен здесь .

Сейчас оно кажется дружественнымпредупреждение.Хотя общее мнение таково, что это станет правилом.

Возможно, стоит взглянуть на шаблон проекта для "OpenGL Game" в Xcode.Казалось бы, именно так Apple хочет структурировать все приложения.

0 голосов
/ 21 декабря 2011

изменить на

@ синтезировать окно;

вместо

@ synthesize window = _window;

0 голосов
/ 18 декабря 2011

Возможно, вам нужно использовать @property и @synthesize для glView.

...