0

我想在我的项目中取消 XIB (Nib) 文件,因为这就是我滚动的方式。但是我发现我的 AppDelegate 类的方法 didFinishLaunchingWithOptions 甚至从未被调用过。

我尝试在我的应用程序的主 plist 中设置主体类,如下所示:

<key>NSPrincipalClass</key>
<string>AppDelegate</string>

这只会导致错误:

    +[AppDelegate registerForSystemEvents]: unrecognized selector sent to class 

那么......我怎么能没有主体类而只运行我的 AppDelegate 类?

谢谢。

4

2 回答 2

1

最简单的事情就是从一个合适的项目模板开始......选择“空应用程序”不会创建一个 nib,但会使用以下关键行正确设置您的 main.m:

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

我认为 registerForSystemEvents 是 UIApplication 上的私有方法,这是有道理的,因为主体类应该是 UIApplication 或其子类,而不是符合 UIApplicationDelegate 的响应者。

上面的 UIApplicationMain() 调用会将您的主体类设置为 UIApplication 并将委托设置为您的自定义 AppDelegate 类。

但正如我所说 - 只需使用适当的项目模板让生活变得简单。

于 2012-01-14T02:15:46.900 回答
0

所有基于 C 的程序都需要 main.m,它是所有程序的起点。您可以选择空白模板,也可以创建自己的模板。虽然如果你创建自己的,你需要确保你有一个自动释放池。您需要将您的应用程序委托导入 main.m,我很确定您也需要 UIKit。然后添加以下代码(根据需要替换您的应用程序委托类:

int main(int argc, char *argv[])
    {
        int retVal = 0;
        @autoreleasepool {
            retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        }
        return retVal;
    }
于 2012-01-14T02:23:44.983 回答