Xcode 4 iphone 3.1.3应用程序无法正常工作

时间:2011-09-20 21:50:17

标签: iphone xcode ios4 incompatibility iphone-sdk-3.1.3

我正在使用Xcode 4,我的软件在iPhone 4和模拟器上运行良好但是当我在iPhone 2G或3Gs等设备上测试时,我运行代码后立即出现此错误:

由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[setValue:forUndefinedKey:]:此类不是键值rootViewController的键值编码兼容。'

寻找解决问题的方法我构建了一个hello world程序并且无法在iPhone 3gs上运行...在搜索解决方案时我发现了这个:

// self.window.rootViewController = self.viewController;     [self.window addSubview:[self.viewController view]];

使用像这样的addsubview,程序运行正常......

好的,你好世界运行良好,但我的程序根本不起作用......

也许这是我应该改变的代码......(但我现在还没有......)

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 {
// Override point for customization after application launch.

//this and application should run on 3.1.3
if ([self.window respondsToSelector:@selector(setRootViewController:)])
    self.window.rootViewController = self.viewController;
else
    [self.window addSubview:self.viewController.view];

// Add registration for remote notifications
[[UIApplication sharedApplication] 
 registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

// Clear application badge when app launches
//application.applicationIconBadgeNumber = 0;

[self.window makeKeyAndVisible];

return YES;

}

我搜索有关此问题的一些信息,但每次我搜索我发现只是改变线      self.window.rootViewController = self.viewController;

但遗憾的是没多大帮助。

感谢你们的耐心等待:)

编辑:

我改变了代码

if ([self.window respondsToSelector:@selector(setRootViewController:)])
    self.window.rootViewController = self.viewController;
else
    [self.window addSubview:self.viewController.view];

[self.window addSubview:self.viewController.view];

但错误仍然相同......

1 个答案:

答案 0 :(得分:1)

UIWindow在iOS版本低于4.0时没有rootViewController属性。因此,如果您想支持这些版本,则不能使用self.window.rootViewController = myViewController;,通常需要将控制器的视图添加到窗口中,即:[self.window addSubview:myViewController.view];

编辑:问题是如何检查它是什么版本,因为3.1.3仍然可以响应setRootViewController(内置但不是公共变量)。