如果同一文件中有2个Appdelegate类,会发生什么

时间:2013-12-11 06:07:56

标签: ios iphone objective-c xcode

在我的xcode项目中有2个appdelegate类。它会以这种方式工作。我有2个视图控制器和相应的视图控制器类。如何将应用程序委托类连接到故事板中的视图控制器。是否可以为项目设置多个应用程序代理?

6 个答案:

答案 0 :(得分:5)

您应该只使用一个应用程序委托。

如果您有2个委托类会怎样?答案是没有

它只会响应项目主类中的一个引用。

main方法将如下所示,

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

用于通用应用程序,

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
// load viewcontroller 1
}
else
{
// load viewcontroller 2
}

我希望这会有所帮助。

答案 1 :(得分:2)

你真的应该只使用一个AppDelegate作为通用应用程序。您可以使用它来分享您将在那里做的常见事情。如果您需要针对设备类型执行某些操作(例如 - iPhone或iPad),那么您可以执行如下所示的三元表达式:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? NSLog(@"Load view for iPad") : NSLog(@"Load view for iPhone");

答案 2 :(得分:2)

首先,你不知道如何得到两个AppDelegate或者为什么需要它,但如果你想同时使用两个,那就不可能了。但是,您可以拨打特定的AppDelegate,这样您就需要在main.m上调用AppDelegate。虽然我没有尝试过。但我想在AppDelegate方法中didFinishLaunchingWithOptions而不是main.m制定条件。祝你好运。

return UIApplicationMain(argc, argv, nil, (yourCoditionHere)?NSStringFromClass([AppDelegate class]):NSStringFromClass([AppDelegate1 class]));

答案 3 :(得分:1)

只需使用单一的。您可以使用 - [[UIApplication sharedApplication] delegate]在view-controller中使用app-delegate类。这将返回app-delegate类的实例。

答案 4 :(得分:1)

不,您不能为应用程序设置两个类AppDelegate。 查看main function,我们将其设置为AppDelegate ...

int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName); 

在这个函数中,我们只能通过发送类名作为参数来设置一个AppDelegateNSStringFromClass([AppDelegate class]) - > 这是xcode项目默认设置的Xcode

UIApplication是一个单例类,因此我们只能为应用程序设置一个AppDelegate

答案 5 :(得分:0)

答案是否定的。 Appdelegate是一个单身人士。