在Universal应用程序中,它为您提供iphone AppDelegate和ipad AppDelegate 分开。
现在,您如何设置逻辑来确定要使用哪个应用委托,它如何知道哪个实例化和使用默认模板不会声明。如果我要在iPhone appDelegate中写一下,我怎么知道这只适用于iPhone iOS ...
答案 0 :(得分:2)
您没有自己实例化应用委托。 Info.plist文件告诉应用程序在iPhone或iPad上运行时要加载哪个Nib文件。并且每个Nib文件都表示要创建相应类的对象。因此,会自动选择正确的app委托类,您可以通过[[UIApplication sharedApplication]委托]访问它。
因此,在大多数情况下,您无需担心此问题。您可以确定iPhone应用代理中的所有方法都将在iPhone上运行时运行。
您可能关心的一种情况是当您向委托发送消息或从委托类外部读取其属性时(虽然这种情况几乎总是不可取的)。
在这种情况下,要禁止编译器警告,您可能需要执行以下操作:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
[(AppDelegate_iPad *)[[UIApplication sharedApplication] delegate] specificMessage];
答案 1 :(得分: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]));
}
}
}