iPhone Reference Libary - UIApplication说我可以继承UIApplication,但如果我尝试这个,我会得到一个例外:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'There can only be one UIApplication instance.'
这让我想起了汉兰达“只能有一个,。: - ”
我是否必须将其他争论传递给UIApplicationMain?或者我是否想念图书馆中的某些内容?
答案 0 :(得分:26)
您是否已将子类的名称传递给UIApplicationMain?我们假设你有
@interface MyUIApp : UIApplication
...
然后在main()中你应该这样做:
NSString* appClass = @"MyUIApp";
NSString* delegateClass = nil;
int retVal = UIApplicationMain(argc, argv, appClass, delegateClass);
答案 1 :(得分:12)
在你的应用的info.plist中,确保将NSPrincipalClass
键更改为子类的名称。这将使Cocoa在应用程序加载时实例化正确的类 - 您不必为了让子类工作而执行除此之外的任何操作。
答案 2 :(得分:0)
我知道这是旧的,接受的答案是o.k.,但要说清楚......
假设你有:
UIApplication
子类为MyApplication
UIApplicationDelegate
子类为MyAppDelegate
然后你的main.m看起来像:
#import <UIKit/UIKit.h>
#import "MyApplication.h"
#import "MyAppDelegate.h"
int main(int argc, char * argv[])
{
@autoreleasepool
{
return UIApplicationMain(argc,
argv,
NSStringFromClass([MyApplication class]),
NSStringFromClass([MyAppDelegate class]));
}
}
如果您没有成为UIApplication
或UIApplicationDelegate
的子类,则只需将nil
作为相应参数传递给UIApplicationMain
。
答案 3 :(得分:-5)
在应用程序中只能有一个UIApplication实例,不应该初始化一个新的应用程序对象,使用UIApplication的静态方法:+(UIApplication *)sharedApplication。