我们的Cocoa/Cocoa-touch应用程序中,应用程序代理在哪里注册?

3

每个应用都有一个应用程序委托。

我们在代码中哪里指定/注册“SomeClass”(UIApplicationDelegate的子类)是我的应用程序的委托?


4
它不是 UIApplicationDelegate 的子类,而是一个符合 UIApplicationDelegate 协议的类。 - albertamg
2
另外,若要挑剔的话,代表的并不是这个类,而是这个类的一个实例。 - Monolo
2个回答

4
如果您使用Storyboarding,则在main.m中使用以下代码行执行此操作:
UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

如果UIApplicationMain()的第四个参数不是nil,函数将创建指定类的实例,并将其分配为UIApplication对象的代理。
如果您不使用故事板,连接将在MainWindow.xib中进行,其中应用程序委托对象被创建并连接为File's Owner的代理(File's Owner是UIApplication实例,它又由UIApplicationMain()函数创建)。

无论您是否使用故事板,都可以使用UIApplicationMain完成。我不确定这个更改是何时发生的,但是从Xcode 4.2.1开始,Cocoa Touch模板中没有一个主nib。 - Peter Hosey

0

这是我如何找到我的应用程序的应用委托...

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];

应用程序委托的类名只是您的应用程序名称后跟"AppDelegate"。 您会在项目文件列表中看到该类,但它是自动生成的。 只需寻找"MyAppDelegate.m"文件即可。
这个类在窗口应用程序的MainWinodw.xib中分配委托职责。 如果您不使用窗口应用程序,则可能会在"main.m"文件中的UIApplicationMain调用中找到该分配。

我们在哪里指定MyAppDelegate是我们应用程序的主要委托? - Anand
抱歉,我已经在上面澄清了。但是我看到 Ole 在我编辑时下面说了同样的话!无论如何,希望你找到所需的信息。 - EFC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接