0

如何在通用应用程序中访问共享委托或设备特定的“委托”?

我想在共享委托上存储属性并将基本逻辑放在那里,但如果我想做,比如在 iPhone 委托上说 iPhone 特定的东西,我会假设我需要分别访问这两个委托。这个对吗?

如何在代码中访问这些委托?

4

1 回答 1

4

我不确定您所说的特定于设备的代表是什么意思。我假设通过“共享委托”您指的是您的应用程序委托。如果你需要特定于 iPhone 或 iPad 的东西,你可以这样做:

BOOL isiPad = NO;
if ([UIDevice instancesRespondToSelector:@selector(userInterfaceIdiom)]) {
    UIUserInterfaceIdiom idiom = [[UIDevice currentDevice] userInterfaceIdiom];

    if (idiom == UIUserInterfaceIdiomPad) {
        isiPad = YES;
    }
}

if (isiPad) {
    // iPad-specific stuff
} else {
    // iPhone-specific stuff
}

这比使用#defines 更好,因为您可以编译一个通用应用程序以在所有 iOS 设备上工作。

编辑:添加了一些内省以防止它在 iPhone OS 3.1.x 及更早版本上崩溃。谢谢,巴斯蒂安。

于 2010-06-18T18:34:43.463 回答