AppDelegate未被调用

时间:2013-02-28 18:24:47

标签: iphone ios xcode breakpoints appdelegate

我似乎无法让我的appdelegate被调用。使用断点甚至看起来不像第一个被称为断点。

这就是我在main.m中的内容

int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegatename");
[pool release];
return retVal;
}

3 个答案:

答案 0 :(得分:2)

请说AppDelegateMyAppDelegate,在MyAppDelegate.hMyAppDelegate.m中定义。

试试这个:

#import <UIKit/UIKit.h>
#import "MyAppDelegate.h"

int main(int argc, char *argv[])
{
    @autoreleasepool
    {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([MyAppDelegate class]));
    }
}

编辑:这是支持ARC的应用程序的当前功能。如果您不使用ARC,您应该考虑取消它。如果您坚持使用非ARC方法,那么只需更换您的线路:

int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegatename");

int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([MyAppDelegate class]));

在这两种情况下,您都必须使用应用程序委托类的真实名称替换MyAppDelegate

EDIT2:

根据你的附加命令,你的main.m应该是这样的:

#import <UIKit/UIKit.h>
#import "Radio99AppDelegate.h"

int main(int argc, char *argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([Radio99AppDelegate class]));
    [pool release];
    return retVal;
}

我不确定你是使用radio99AppDelegate还是Radio99AppDelegate - 最后一个是'标准'。如果这是一个新项目,那么考虑将其“翻译”到ARC是明智的。对内存管理的麻烦要少得多。

答案 1 :(得分:1)

int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

答案 2 :(得分:0)

我正在将旧版应用迁移到iOS 9.2并遇到了这个问题。在我的main方法中,我必须传递AppDelegate的类名作为principalClassName参数以及UIApplicationMain的delegateClassName参数。

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, NSStringFromClass([AppDelegate class]), NSStringFromClass([AppDelegate class]));
    }
}