Objective c 应用程序崩溃,带“;无法还原以前选择的帧";消息
我不明白为什么那个代码会导致应用程序崩溃 AppDelegate.hObjective 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
- (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]