Objective c 应用程序崩溃,带“;无法还原以前选择的帧";消息

Objective c 应用程序崩溃,带“;无法还原以前选择的帧";消息,objective-c,ios,xcode,uiview,Objective C,Ios,Xcode,Uiview,我不明白为什么那个代码会导致应用程序崩溃 AppDelegate.h - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; sel

我不明白为什么那个代码会导致应用程序崩溃

AppDelegate.h

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    self.rootViewController = [[[RootViewController alloc]init]autorelease];

    [self.window setRootViewController:self.rootViewController];


    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}
下面是RootViewController.m代码

-(void)loadView
{
    UIView *view = [[UIView alloc]initWithFrame:CGRectMake(10, 10, 10, 10)];
    [view setBackgroundColor:[UIColor lightGrayColor]];
    [self.view addSubview:view];
    [view release];
}
我在调试器中得到了这个消息

Unable to restore previously selected frame.

加载视图
应设置视图。当
self.view
为nil时调用它。现在您正在调用
[self.view addSubview:view]
UIKit调用
loadView
,这将创建一个无限递归。你应该做
self.view=view此处。

loadView
应设置视图。当
self.view
为nil时调用它。现在您正在调用
[self.view addSubview:view]
UIKit调用
loadView
,这将创建一个无限递归。你应该做
self.view=view此处。

loadView负责首先设置视图。你没做到。而是在self.view中添加了一个视图

通过以下行更改代码:

self.view = view;
而不是
[self.view addSubview:view]


另外,建议在从函数返回之前调用
[super loadView]

loadView负责首先设置视图。你没做到。而是在self.view中添加了一个视图

通过以下行更改代码:

self.view = view;
而不是
[self.view addSubview:view]

此外,建议在从函数返回之前调用
[super loadView]