主文件中的标准参数

时间:2011-09-02 19:41:25

标签: ios xcode4

主文件中的标准参数是什么。我想我在主文件中设置了错误的标准参数,需要更改它们。我认为问题是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) 

4 个答案:

答案 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 构建行动设置为捆绑资源而不是编译,因此它不包含在构建中。