我想在我的项目中取消XIB(Nib)文件,因为这就是我的滚动方式。但是我发现我的AppDelegate类的方法didFinishLaunchingWithOptions从未调用过。
我尝试在我的应用程序的主plist中设置主要类,如下所示:
<key>NSPrincipalClass</key>
<string>AppDelegate</string>
这只会导致错误:
+[AppDelegate registerForSystemEvents]: unrecognized selector sent to class
那么......如果没有主要类,我怎么办才能运行我的AppDelegate类?
感谢。
答案 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;
}