如何将UIApplication子类化?

mas*_*che 14 iphone

iPhone参考库 - UIApplication说我可以继承UIApplication,但如果我尝试这个,我会得到一个例外:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'There can only be one UIApplication instance.'
Run Code Online (Sandbox Code Playgroud)

这让我想起了汉兰达"只有一个,.:-)

我是否必须将其他争论传递给UIApplicationMain?或者我是否想念图书馆中的某些内容?

Tee*_*ppa 26

您是否将子类的名称传递给UIApplicationMain?我们假设你有

@interface MyUIApp : UIApplication 
...
Run Code Online (Sandbox Code Playgroud)

然后在main()中你应该这样做:

NSString* appClass = @"MyUIApp";
NSString* delegateClass = nil;
int retVal = UIApplicationMain(argc, argv, appClass, delegateClass);
Run Code Online (Sandbox Code Playgroud)


iKe*_*dac 12

在应用程序的info.plist中,确保将NSPrincipalClass密钥更改为子类的名称.这将使Cocoa在应用程序加载时实例化正确的类 - 您不必为了让子类工作而执行除此之外的任何操作.

  • 这似乎只适用于Mac OS X,不适用于iPhone OS:http://developer.apple.com/iphone/library/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251- SW1 (3认同)