0

我似乎根本无法调用我的 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;
}
4

3 回答 3

2

假设您的AppDelegateis ,在andMyAppDelegate中定义。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为应用程序委托类的真实名称。

编辑2:

根据您的附加命令,您的 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。内存管理的麻烦要少得多。

于 2013-02-28T18:27:24.677 回答
1
int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
于 2013-02-28T18:27:45.497 回答
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]));
    }
}
于 2016-03-07T05:31:06.500 回答