如何通过编程创建窗口和视图来设置iOS应用程序?

时间:2012-01-14 02:05:13

标签: ios xib nib uiapplicationdelegate uiapplication

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

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

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

这只会导致错误:

    +[AppDelegate registerForSystemEvents]: unrecognized selector sent to class 

那么......如果没有主要类,我怎么办才能运行我的AppDelegate类?

感谢。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

答案 1 :(得分:0)

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

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