iPad / iPhone4 Универсальная сборка - PullRequest
1 голос
/ 12 июля 2010

Я хотел бы сделать универсальную сборку, которая будет работать на iPad и iPhone4. По сути, это игра в формате HD, которая будет работать на устройствах с более высоким разрешением.

Насколько я знаю, iPad и iPhone4 работают под управлением armv7, поэтому выбор armv6 и armv7, похоже, не имеет смысла. Хотя это то, что Apple говорит вам делать. Мне известно, что эти инструкции были сделаны еще до выхода iPhone4, поэтому мне интересно знать, знает ли кто-нибудь процедуру сборки для iPad 3.2 и iPhone 4.0.

Если это отражено в документации SDK, извините, но я просто не могу ее найти!

В качестве бонуса мне бы хотелось узнать определения для конкретного строящегося SDK, чтобы я мог выполнить проверку во время компиляции, чтобы не было ошибок при запуске через компиляцию 3.2. В классе слоя есть конкретный член под названием contentsScale, который теперь присутствует в 4.0. Мне просто нужно знать название определения для одного или обоих из них. (3,2 и 4,0)

Спасибо большое!

Кайл

1 Ответ

2 голосов
/ 13 июля 2010

Если единственное устройство, которое вы хотите поддерживать, это iPhone 4 и iPad в вашем приложении, вы можете собрать только против armv7, что немного уменьшит размер вашего исполняемого файла. Однако вам нужно будет добавить armv7 в список под ключом UIRequiredDeviceCapabilities в вашем Info.plist, чтобы убедиться, что список App Store не позволяет установить его на устройство armv6. Предотвратить его покупку и запуск на iPhone 3GS S armv7 и iPod touch третьего поколения, хотя iPhone 4 и iPad будут более хитрыми.

В противном случае вы бы создали это приложение, как любое другое универсальное приложение. Я рекомендую либо начинать с проекта iPhone и преобразовывать его в универсальное приложение, либо начинать с универсального шаблона приложения.

Определение того, реализован ли конкретный метод во время выполнения, можно сделать с помощью метода -respondsToSelector:. Например, следующий код проверяет наличие -contentsScale на CALayer и регулирует масштаб слоя в соответствии с масштабом дисплея:

if ([self respondsToSelector:@selector(setContentsScale:)])
{
    Class screenClass = NSClassFromString(@"UIScreen");
    if ( screenClass != Nil)
    {
        id scale = [[screenClass mainScreen] valueForKey:@"scale"]; 
        [(id)self setValue:scale forKey:@"contentsScale"]; 
    }
}
...