Я полагаю, что видео сессий WWDC 2010 включает обзор развития iPad, который охватывает именно эту проблему.
Вот подход, который я выбрал, согласно руководству Apple:
Вы можете установитьспецифичные для платформы основные интерфейсы, что означает, что вы также можете устанавливать специфичные для платформы делегаты приложения .Так что, возможно, у вас есть делегат приложения суперкласса, который выполняет всю настройку вашего приложения, а затем подклассы для развертывания интерфейса iPad или iPhone.
Это полезно, поскольку на iPad для разделенных представлений нужен полицейский дляопределить, какой контент идет куда.Теперь у вас есть возможность поместить эту логику независимо от контроллеров представления: в делегате приложения.
Оттуда в любое время появляется контроллер представления, который является общим для обеих платформ, но имеет определенное поведение длякаждый, суперкласс контроллера представления создан, который обрабатывает все общие функциональные возможности.Специфичный для iPad подкласс может затем переопределить метод -refreshView: для создания дополнительной анимации или для добавления свойств и методов делегирования для поддержки разделенных видов.
Хотя вы можете определенно проверить iPad-ность с помощью if else
это может привести к действительно грубости в контроллере представления, поскольку вы добавляете методы делегата, которые имеют значение только на одной платформе.Разделив его таким образом, вы получите код, который намного проще поддерживать и читать.Все это может означать много рефакторинга существующего проекта.В моем случае, однако, это заняло около часа, и в результате получилось очень аккуратное приложение, в которое легко перейти и изменить его для одной или обеих платформ.