Стандартные аргументы в основном файле - PullRequest
2 голосов
/ 02 сентября 2011

Каковы стандартные аргументы в основном файле. Я думаю, что я установил неправильные стандартные аргументы в главном файле, и мне нужно изменить их обратно. Я думаю, что проблема в ноль и ноль в аргументах UIApplicationMain.

Вот код, который у меня есть:

#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 ]

5 голосов
/ 03 сентября 2011

Последний аргумент UIApplicationMain - это имя вашего подкласса UIApplicationDelegate.Это требуется, если вы создаете свое приложение программно, без каких-либо nib-файлов.

int retval = UIApplicationMain(argc, argv, nil, NSStringFromClass([YourAppDelegate class]));

Вам нужно #import "YourAppDelegate.h", чтобы оно работало таким образом, или вы можете просто жестко закодировать имя, как предложил Voloda2.

Преимущество использования этого способа заключается в том, что если вы измените имя класса делегата приложения, вы сразу получите предупреждение компилятора, а если он жестко задан, он будет собираться и запускаться без предупреждений, но вылетает.

2 голосов
/ 02 сентября 2011

Может быть, вам нужно:

int retval = UIApplicationMain(argc, argv, nil, @"AppDelegate");
0 голосов
/ 13 сентября 2012

Это вам совсем не полезно, но у меня было то же самое сообщение в MonoTouch, и я обнаружил, что я установил AppDelegate.cs Build Action на Bundle Resource вместо Скомпилируйте , чтобы он не был включен в сборку.

0 голосов
/ 16 сентября 2011

Если HypnoTime является примером из «IOS Programming: The Big Nerd Ranch Guide», то я могу сказать, что у меня тоже были странные проблемы с зависанием при работе в симуляторе. Аргументы "nil, nil" будут работать в main.m. В итоге я полностью удалил приложение из Simulator, очистил сборку, затем снова запустил, и мои исключения исчезли. Я использую 4.3 SDK и 4.3 симулятор.

Вы можете попытаться сделать это или полностью перезапустить симулятор, прежде чем искать ошибки кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...