在Universal应用程序中,它将分别为您提供iphone AppDelegate和ipad AppDelegate 。如何管理通用应用程序中的单独应用程序代理
现在,您如何放入逻辑来确定要使用哪个应用程序委托,它如何知道将哪个应用程序实例化并使用作为默认模板并未声明。如果我要在iPhone appDelegate中编写代码,那么我如何知道这只会在iPhone iOS上运行,例如...
在Universal应用程序中,它将分别为您提供iphone AppDelegate和ipad AppDelegate 。如何管理通用应用程序中的单独应用程序代理
现在,您如何放入逻辑来确定要使用哪个应用程序委托,它如何知道将哪个应用程序实例化并使用作为默认模板并未声明。如果我要在iPhone appDelegate中编写代码,那么我如何知道这只会在iPhone iOS上运行,例如...
您不需要自己实例化应用程序委托。您的Info.plist文件会告知在iPhone或iPad上运行应用程序时要加载哪个Nib文件。并且每个Nib文件都表示要创建相应类的对象。因此,正确的应用程序委托类是自动选择的,您可以通过[[UIApplication sharedApplication]委托]访问它。
因此,在大多数情况下,您不必担心这个问题。您可以确定iPhone应用程序委托中的所有方法都将在iPhone上运行时运行。
您可能在意的一种情况是,您将消息发送给委托或从委托类外部读取其属性(尽管这种情况几乎总是不可取)。
在这种情况下,为了抑制编译器警告,你可能想要做这样的事情:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
[(AppDelegate_iPad *)[[UIApplication sharedApplication] delegate] specificMessage];
你可以在你的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]));
}
}
}