Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Даже если вы не планируете сразу добавлять функции iOS 9 в приложение, необходимо перестроить приложения с последней версией Xamarin.
Внимание
Сведения на этой странице предназначены для клиентов с приложениями, уже работающими в App Store, предназначенными для iOS 8 или более ранних версий, которые еще не отправили обновления для совместимости iOS 9. Если вы уже используете последние версии — Xcode 7 и Xamarin.iOS 9 — для разработки приложений ознакомьтесь с введением в iOS 9.
Когда появились первые бета-версии iOS 9, мы определили две проблемы со старыми версиями Xamarin, которые манифестировались как старые приложения, которые не могут запускаться на iOS 9:
- Приложения, созданные для iOS 8 или более ранних версий, не могут запускаться на 32-разрядных устройствах (включая приложения, созданные с помощью единого API).
- Сбой P/Invoke с полным путем не указан.
Обновите установку Xamarin до последней версии стабильного канала, а затем перестроите и повторно разверните приложения, исправляет эти две проблемы.
Даже если вы не планируете обновлять приложение с помощью функций iOS 9 сразу, мы рекомендуем повторно создать последнюю версию Xamarin и повторно отправить в App Store.
Это гарантирует, что ваше приложение будет работать в iOS 9 после обновления клиентов. Вы можете продолжать поддерживать iOS 8. Перестроение с помощью последнего выпуска не влияет на целевую версию приложения.
Если при тестировании существующих приложений на iOS 9 возникли дополнительные проблемы, ознакомьтесь с разделом "Улучшение совместимости " ниже.
Обновление с помощью Visual Studio
Рекомендуется явно проверка, что Visual Studio обновляется до последней стабильной версии.
Что касается компонентов, Nugets и других библиотек?
Вам не нужно ожидать новых версий компонентов или Nuget, которые вы используете для решения двух проблем, упоминание выше. Эти проблемы исправлены просто путем повторного создания приложения с помощью последнего стабильного выпуска Xamarin.iOS.
Аналогичным образом, поставщикам компонентов и авторам NuGet не требуется отправлять новые сборки только для устранения двух проблем, упоминание выше. Однако если любой компонент или NuGet использует UICollectionView или загружает представления из Xib-файлов, обновление может потребоваться для устранения проблем совместимости iOS 9, упоминание приведенных ниже.
Улучшение совместимости в коде
Существует несколько случаев шаблонов кода, которые использовались для работы в более ранних версиях iOS критического состояния в iOS 9. Ниже приведены некоторые возможные проблемы (и их решения), которые могут возникнуть при тестировании на iOS 9:
UICollectionViewCell.ContentView Имеет значение NULL в конструкторах
Причина. В iOS 9 конструктор теперь требуется из-за изменений поведения в iOS 9 initWithFrame: в качестве состояния документации UICollectionView. Если вы зарегистрировали класс для указанного идентификатора и необходимо создать новую ячейку, она теперь инициализирована путем вызова его initWithFrame: метода.
ИсправлениеinitWithFrame:: добавьте конструктор следующим образом:
[Export ("initWithFrame:")]
public YourCellClassName (CGRect frame) : base (frame)
{
Initialize (); // refactor initialize code into a method
}
Связанные примеры: MotionGraph, TextKitDemo
UIView не удается ввести кодировщик при загрузке представления из Xib/Nib
Причина. Конструктор initWithCoder: вызывается при загрузке представления из Xib-файла построителя интерфейсов. Если этот конструктор не экспортируется неуправляемый код, не может вызвать ее управляемую версию. Ранее (например, в iOS 8) IntPtr конструктор был вызван для инициализации представления.
Исправление: создайте и экспортируйте initWithCoder: конструктор следующим образом:
[Export ("initWithCoder:")]
public YourClassName (NSCoder coder) : base (coder)
{
Initialize (); // refactor initialize code into a method
}
Связанный пример: чат
Dyld Message: без образа кэша с именем...
В журнале может возникнуть сбой со следующими сведениями:
Dyld Error Message:
Dyld Message: no cache image with name (/System/Library/PrivateFrameworks/JavaScriptCore.framework/JavaScriptCore)
Причина. Это ошибка в собственном компоновщике Apple, которая происходит, когда они делают частную платформу общедоступной (JavaScriptCore был открыт в iOS 7, прежде чем она была частной платформой), а цель развертывания приложения — для версии iOS, когда платформа была закрытой. В этом случае компоновщик Apple будет связываться с частной версией платформы вместо общедоступной версии.
Исправление. Это будет решено для iOS 9, но в этом случае можно применить простое решение: просто нацелиться на более позднюю версию iOS в проекте (в этом случае можно попробовать iOS 7). Другие платформы могут столкнуться с аналогичными проблемами, например, платформа WebKit была открыта в iOS 8 (и поэтому назначение iOS 7 приведет к этой ошибке. Для использования WebKit в приложении следует использовать WebKit 8).