【问题标题】:Root view controller warning after converting to ARC转换为 ARC 后的根视图控制器警告
【发布时间】:2012-01-23 02:38:50
【问题描述】:

我正在将我的 opengl 游戏转换为 ARC,并在应用启动时遇到此错误/警告消息:

应用程序在应用程序启动结束时应该有一个根视图控制器。

我没有使用 nib 或 xib 文件来创建我的视图或窗口。在非 arc 代码中一切正常(现在已经有几年了)。

出现错误/警告后,游戏继续运行,运行良好,但我想知道是什么原因造成的,因为它可能会在以后引起问题。

我的猜测是现在它是弧形的东西没有被正确保留,但我不知道是什么。有任何想法吗?下面是我如何创建我的 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;
}

【问题讨论】:

    标签: objective-c ios opengl-es automatic-ref-counting


    【解决方案1】:

    Applications are expected to have a root view controller at the end of application launch.”消息正在弹出,因为许多人没有在 Xcode 4.2 上的 iOS5 中的应用程序委托的窗口属性上设置 rootViewController 属性。 (不依赖于 ARC)

    A question on why this message shows up has been posted here.

    现在这似乎是一个友好的警告。虽然普遍的感觉是它会成为一个规则。

    在 Xcode 中查看“OpenGL 游戏”的项目模板可能值得一看。这似乎是苹果希望所有应用程序结构化的方式。

    【讨论】:

    • 它可能不依赖于 ARC,但它只发生在启用了 ARC 的代码上。
    【解决方案2】:

    glView 可能需要使用@property 和@synthesize。

    【讨论】:

      【解决方案3】:

      改成

      @synthesize 窗口;

      而不是

      @synthesize window=_window;

      【讨论】:

        猜你喜欢
        • 2018-01-03
        • 2011-07-24
        • 2017-01-27
        • 1970-01-01
        • 1970-01-01
        • 2015-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多