2011-02-17 100 views
0

在Universal应用程序中,它将分别为您提供iphone AppDelegate和ipad AppDelegate 。如何管理通用应用程序中的单独应用程序代理

现在,您如何放入逻辑来确定要使用哪个应用程序委托,它如何知道将哪个应用程序实例化并使用作为默认模板并未声明。如果我要在iPhone appDelegate中编写代码,那么我如何知道这只会在iPhone iOS上运行,例如...

回答

2

您不需要自己实例化应用程序委托。您的Info.plist文件会告知在iPhone或iPad上运行应用程序时要加载哪个Nib文件。并且每个Nib文件都表示要创建相应类的对象。因此,正确的应用程序委托类是自动选择的,您可以通过[[UIApplication sharedApplication]委托]访问它。

因此,在大多数情况下,您不必担心这个问题。您可以确定iPhone应用程序委托中的所有方法都将在iPhone上运行时运行。

您可能在意的一种情况是,您将消息发送给委托或从委托类外部读取其属性(尽管这种情况几乎总是不可取)。

在这种情况下,为了抑制编译器警告,你可能想要做这样的事情:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
    [(AppDelegate_iPad *)[[UIApplication sharedApplication] delegate] specificMessage]; 
1

你可以在你的main.m这样。

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool { 

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
    { 

     return UIApplicationMain(argc, argv, nil, NSStringFromClass([myipadAppDelegate class])); 
    } 
    else{ 

    return UIApplicationMain(argc, argv, nil, NSStringFromClass([myiphoneAppDelegate class])); 
    } 
    } 
} 
相关问题