我正在将我的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;
}
答案 0 :(得分:2)
许多人没有在Xcode 4.2上的iOS5中的应用程序委托的窗口属性上设置rootViewController属性,弹出“Applications are expected to have a root view controller at the end of application launch.
”消息。 (不依赖于ARC)
A question on why this message shows up has been posted here
现在它似乎是一个友好的警告。虽然总的感觉是它会成为一种规则。
在Xcode中查看“OpenGL游戏”的项目模板可能是值得的。这似乎是苹果希望所有应用程序结构化的方式。
答案 1 :(得分:0)
您可能需要将@property和@synthesize用于glView。
答案 2 :(得分:0)
更改为
@synthesize window;
而不是
@synthesize window = _window;