Я не уверен, что вы подразумеваете под делегатами от конкретного устройства. Я предполагаю, что под «общим делегатом» вы ссылаетесь на своего делегата приложения. Если вам нужно что-то конкретное для 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
}
Это лучше, чем использовать #define
s, потому что вы можете скомпилировать одно универсальное приложение для работы на всех устройствах iOS.
РЕДАКТИРОВАТЬ: Добавлен некоторый самоанализ, чтобы предотвратить это сбой на iPhone OS 3.1.x и более ранних версий. Спасибо, Бастиан.