2014-01-08 3 views
2

Я создал мое приложение с помощью xcode 5 для поддержки ios 6 или выше. Я хочу, чтобы одно и то же приложение работало с версиями менее 6. Я не использую автомат . Я изменил все свои файлы nib для сборки с помощью os 4.3 или новее. Но устаревшие методы не работают на более старых версиях. Каков наилучший способ поддержки нескольких версий ios (в моем случае ios 4.3 - ios 7.0) ?.Как поддержать приложение от версий iOS 4.3 до iOS 7

+3

Зачем нужна поддержка iOS 4.3, 80% на iOS 7, остальные на 6, а некоторые на 5. 4.3 вряд ли используются.Но в стороне, да, используйте NIB и проверяйте, доступен ли метод, который вы вызываете, в al-версии. Если вам нужно вызвать какой-либо метод, недоступный в версии, используйте 'responsesToSelector:', чтобы проверить, поддерживается ли он. – rckoenes

+0

Мое требование - поддерживать устройства от ios 4.3 до ios 7 ... OK, используя responseToselector, узнает, поддерживается ли оно или нет. Что делать, если его не поддерживает? – sujay

+0

взгляните на этот вопрос ... http://stackoverflow.com/questions/12776932/supporting-ios-4-3-to-ios-6-0 –

ответ

2

Пожалуйста, избегайте цели развертывания как 4.3. используйте эту ссылку, в настоящее время нет устройства, использующего 4.3. его пустая трата времени

вы можете использовать только собственный код или xib, если хотите, приложение с целью развертывания в качестве 4.3.

, потому что автоматическая раскладка не поддерживает 4,3 и 5,0

stroyboard не поддерживает 4,3

enter image description here

https://mixpanel.com/trends/

3

http://www.raywenderlich.com/42591/supporting-multiple-ios-versions-and-devices может дать вам хорошие советы.

короткая часть статьи:

неподдерживаемых классы

Иногда вы хотите использовать класс, который существует в базовой SDK, но не в вашей цели развертывания. Для этого вам нужно , чтобы проверить доступность этого класса во время работы, чтобы избежать сбоя вашего приложения. Он выходит из строя, потому что это то, что будет выполняться во время выполнения Objetive-C, если вы попытаетесь использовать класс, который не существует. Начиная с iOS 4.2 классы слабо связаны, поэтому вы можете использовать метод класса + для выполнения проверки выполнения во время выполнения . Например:

if ([SLComposeViewController class]) { 
    //Safe to use SLComposeViewController } else { 
    //Fail gracefully } 

неподдерживаемых методов

Аналогично, если вы используете метод в базовом SDK, который не существует в вашей цели развертывания , вы можете избежать неприятных аварий с помощью мало интроспекции. Методы -respondsToSelector: и +instancesRespondToSelector: будет как сделать трюк, как показано в примерах кода ниже:

if 
([self.image respondsToSelector:@selector(resizableImageWithCapInsets:resizingMode:)]) 
{ 
    //Safe to use this way of creating resizable images } else { 
    //Fail gracefully } 

То же самое идет для проверки существования методов класса, за исключением того, вы звоните respondsToSelector: по классу сам, например:

if ([UIView 
respondsToSelector:@selector(requiresConstraintBasedLayout)]) { 
    //Safe to use this method } else { 
    //Fail gracefully } 
+0

это не поддержка 4.3 выше ссылка – codercat

2

Что я хотел бы предложить вам, сначала заблокируйте свой код по версии. Я имею в виду make block для устаревших методов, таких как IOS 7, IOS 6, как показано ниже. Затем попробуйте найти соответствующий метод, поддерживаемый этой версией. Но насколько я знаю, вы не можете полностью поддерживать версию 4.3, например 7. Как @rckoenes говорит 80% is on iOS 7 the rest is on 6 and some are on 5. 4.3 is hardly used, так что я также не даю поддержки ниже 6.0. Так повезло.

Смежные вопросы