Ipad 如何在universal application中管理单独的应用程序代理

Ipad 如何在universal application中管理单独的应用程序代理,ipad,ios4,Ipad,Ios4,在通用应用程序中,它为您提供iphone AppDelegate和ipad AppDelegate 分开 现在,您如何在逻辑中确定要使用哪个应用程序委托,它如何知道要实例化和使用哪个应用程序委托,因为默认模板没有状态。如果我要在iPhone appDelegate中编写,我怎么知道它只会在iPhone iOS上运行,例如……您自己不会实例化应用程序委派。当应用程序在iPhone或iPad上运行时,Info.plist文件告诉您要加载哪个Nib文件。每个Nib文件都表示生成相应类的对象。因此,将自

在通用应用程序中,它为您提供iphone AppDelegate和ipad AppDelegate 分开


现在,您如何在逻辑中确定要使用哪个应用程序委托,它如何知道要实例化和使用哪个应用程序委托,因为默认模板没有状态。如果我要在iPhone appDelegate中编写,我怎么知道它只会在iPhone iOS上运行,例如……

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

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

您可能关心的一种情况是向委托发送消息或从委托类外部读取其属性(尽管这种情况几乎总是不可取的)

在这种情况下,要抑制编译器警告,您可能需要执行以下操作:

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

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

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

您可能关心的一种情况是向委托发送消息或从委托类外部读取其属性(尽管这种情况几乎总是不可取的)

在这种情况下,要抑制编译器警告,您可能需要执行以下操作:

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

我喜欢这样

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]));
    }
  }
}

我喜欢这样

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]));
    }
  }
}