如果您要升级同一个项目,那么不,您不能这样做。
Apple 在其模板中用于进入应用程序的机制在这些版本之间发生了变化。
在 3.x 中,Main Interface 在您的项目设置中设置为 MainWindow.xib。在这个xib 中,您的应用程序委托被加载为一个对象。
在 4.x 中,main.m 专门使用以下行加载应用程序委托:
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
这是在 3.x 和 4.x 之间更改的最后一个参数
最好的办法是创建一个新项目,看看模板代码是如何将它们全部连接起来的。
更新
首先,如果您的项目正在运行,您真的需要更改它吗?
如果是这样,那么我正在使用新项目中的模板代码
转到您的 main.m 并更改实现
int main(int argc, char *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
到
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
注意将 AppDelegate 更改为您的应用委托类的名称。
您还需要更新您的应用委托以编程方式创建UIWindow。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Instantiate your rootViewController
self.window.rootViewController = yourRootViewController;
[self.window makeKeyAndVisible];
return YES;
}
这些是我能想到的最明显的区别,可能还有一些其他的字幕但是我很久没用过 3.x 我记不得了。