主文件中的标准参数是什么。我想我在主文件中设置了错误的标准参数,需要更改它们。我认为问题是UIApplicationMain参数中的nil和nil。
这是我的代码:
#import <UIKit/UIKit.h>
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
错误代码:
Attaching to process 1420.
2011-09-02 14:33:04.440 HypnoTime[1420:207] *** Assertion failure in UIApplicationMain(), /SourceCache/UIKit_Sim/UIKit-1448.89/UIApplication.m:1359
2011-09-02 14:33:04.588 HypnoTime[1420:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Unable to instantiate the UIApplication delegate instance. No class named AppDelegate is loaded.'
*** Call stack at first throw:
(
0 CoreFoundation 0x00dc15a9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x00f15313 objc_exception_throw + 44
2 CoreFoundation 0x00d79ef8 +[NSException raise:format:arguments:] + 136
3 Foundation 0x00816341 -[NSAssertionHandler handleFailureInFunction:file:lineNumber:description:] + 101
4 UIKit 0x00021bcd UIApplicationMain + 962
5 HypnoTime 0x000027cf main + 127
6 HypnoTime 0x00002745 start + 53
7 ??? 0x00000001 0x0 + 1
)
terminate called after throwing an instance of 'NSException'
Current language: auto; currently objective-c
(gdb)
答案 0 :(得分:5)
UIApplicationMain的最后一个参数是UIApplicationDelegate子类的名称。如果您以编程方式创建应用程序,而不使用任何nib文件,则需要它。
int retval = UIApplicationMain(argc, argv, nil, NSStringFromClass([YourAppDelegate class]));
你需要#import "YourAppDelegate.h"
才能以这种方式工作,或者你可以像Voloda2建议的那样硬编码。
使用这种方式的好处是,如果您更改您的应用委托类名称,您将立即获得编译器警告,而如果它是硬编码的,它将构建&amp;在没有警告的情况下运行,但崩溃。
答案 1 :(得分:2)
可能是你需要的:
int retval = UIApplicationMain(argc, argv, nil, @"AppDelegate");
答案 2 :(得分:0)
如果HypnoTime是“IOS编程:大书呆子牧场指南”中的示例,那么我可以说我在模拟器中运行了奇怪的崩溃问题。 “nil,nil”参数将在main.m中起作用。我最终完全从模拟器中删除了应用程序,清理了构建,然后重新运行,我的异常消失了。我正在使用4.3 SDK和4.3模拟器。
您可能会尝试这样做或完全重新启动模拟器,然后再努力寻找编码错误。
答案 3 :(得分:0)
这对你没有任何帮助,但我在MonoTouch中收到同样的消息,我发现我将AppDelegate.cs
构建行动设置为捆绑资源而不是编译,因此它不包含在构建中。