Xcode 5.1, iAd Producer 4.1.2 выпущены с улучшенной совместимостью с iOS 7.1

Наряду с выпуском iOS 7.1 для пользователей iPad, iPhone и iPod touch, Apple обновила Xcode и iAd Producer, добавив улучшения для лучшей работы с устройствами iOS 7.1.

iAd 4.1.2 уже появился в разделе обновлений программного обеспечения Mac App Store:

Xcode 5.1 также теперь доступен в Mac App Store и на Developer Center со следующими примечаниями к выпуску:

Новые функции

Отладка

  • Quick Look может быть реализован для пользовательских классов. Когда экземпляр пользовательского класса просматривается с помощью Quick Look в представлении переменных отладчика или в подсказке данных, отладчик представляет его, используя метод -debugQuickLookObject, определенный в реализации класса. Подробности об использовании этой возможности см. в разделе «Quick Look для пользовательских типов в отладчике Xcode». (12723736)
  • Действия точек останова журнала теперь выводят логическое значение выражений. Например, точка останова журнала, такая как "myString = @myString@", теперь выводит значение myString, а не значение указателя. (13211695)

Редактирование пользовательских интерфейсов

  • Документы Interface Builder могут содержать конкретную информацию о новых функциях, которые они используют, и требуемых версиях ОС, позволяя предыдущим версиям Xcode отображать лучшие сообщения об ошибках при попытке открыть такие документы. (7659982)
  • Создание интерфейсов в Interface Builder с использованием авторегулировки предлагает полный набор возможных типов ограничений: соотношения сторон, пропорциональные размеры и положения, выравнивание по перекрестным атрибутам и новый инспектор ограничений с функциями для редактирования почти всех свойств ограничения.
  • Инспектор атрибутов ограничений Interface Builder отображает элементы и атрибуты ограничения и позволяет редактировать атрибуты. Эта функция позволяет создавать ограничения по перекрестным атрибутам, такие как view1.centerY = view2.bottom. (13739009)
  • Вы можете использовать Interface Builder для редактирования отношений любого типа ограничений, включая ограничения выравнивания (например, view1.leading <= view2.leading) и ограничения равного размера (например, view1.width >= view2.width). (14721954)
  • Вы можете создавать ограничения соотношения сторон и пропорционального размера, а также редактировать множитель ограничений в Interface Builder. Множитель может быть десятичным числом (например, 0.5), дробью (например, 1/2) или соотношением сторон (например, 1:2). (11935843)
  • Ограничения, прикрепленные к неоднозначным представлениям в Interface Builder, отображаются оранжевым цветом только по оси неоднозначности. Это ускоряет выявление потенциальной проблемы на холсте. (15114120)
  • Холст Interface Builder теперь отображает накладные прокрутки, когда это уместно, в зависимости от настройки «Показать полосу прокрутки» в разделе «Основные» в «Системных настройках». (10069033)
  • Инспектор Interface Builder теперь поддерживает:
    • NSTableView – свойство floatsGroupRows (9617000)
    • UISegmentedControl – свойство apportionsSegmentWidthsByContent (9950528)
    • UITableView – свойство sectionIndexBackgroundColor (14776025)
    • Установка типа кнопки «Сведения» для прототипа UITableViewCell – свойство editingAccessoryType (15039987)

Instruments и символизация

  • Instruments теперь гораздо надежнее находит символы. Если символы не отображаются автоматически, попробуйте следующее:
    • Когда индексирование Spotlight отключено для производных данных Xcode, например при использовании /tmp, добавьте глобальный список дополнительных путей поиска, настроенный в предпочтениях Instruments.
    • Контекстное меню для адреса теперь включает опцию «Символизировать с DSYM» для добавления конкретного файла символов.
    • Используйте команду «Символы» в меню «Файл», чтобы увидеть более подробный список состояния отдельных исполняемых файлов и библиотек.
      • Зеленый цвет указывает на наличие символов и информации об исходном коде.
      • Желтый цвет указывает на библиотеки с некоторыми символами, но которые все еще могут выиграть от поиска dSYM.
      • Красный цвет указывает на ситуации, которые помешали символизации. (14269449)
  • Инструмент instruments командной строки теперь поддерживает указание SDK симулятора и типа устройства с помощью флага -w. Чтобы увидеть список поддерживаемых конфигураций симулятора, а также подключенных устройств, выполните instruments -s devices в окне Терминала. (14996865)

Скриптовая установка

  • Установка поддержки устройств. При выполнении из командной строки Xcode.app принимает новый аргумент командной строки -installComponents. Когда Xcode запускается из скрипта командной строки с этой опцией, он устанавливает необходимые пакеты поддержки устройств и затем завершает работу. (15127411)

Общие сведения

  • Emoji и другие суррогатные пары Unicode поддерживаются в настройках схемы и в файлах проекта. (14837623 & 13827044)

Изменения

Сборка

  • Arm64 теперь включен в настройку «Стандартные архитектуры». Xcode 5.0 представил поддержку сборки 64-битных приложений iOS, но по умолчанию эта опция не была включена. Чтобы включить опцию сборки 64-битных в Xcode 5.0, была предоставлена настройка архитектур: «Стандартные архитектуры, включая 64-битные» (ARCHS_STANDARD_INCLUDING_64_BIT).

    С выпуском Xcode 5.1 arm64 включен в стандартную настройку сборки «Стандартные архитектуры». В результате проекты, использующие настройки по умолчанию, автоматически собираются для arm64 наряду со стандартными 32-битными архитектурами.

  • Проекты, настроенные на использование «Стандартные архитектуры, включая 64-битные», будут преобразованы в «Стандартные архитектуры $(ARCHS_STANDARD).

Компилятор

  • Начиная с версии компилятора Apple LLVM 5.1 (clang-502) и выше, уровень оптимизации -O4 больше не подразумевает оптимизацию на этапе компоновки (LTO). Для сборки с LTO явно используйте опцию -flto в дополнение к флагу уровня оптимизации. (15633276)

Тестирование

  • Инструмент gcov для тестирования покрытия кода был переработан. Новая версия использует инструмент llvm-cov из проекта LLVM. Он функционально эквивалентен старой версии для всех значительных функций. Местоположение gcov в Xcode также изменилось, используйте xcrun для его вызова. Если вы обнаружите проблемы, пожалуйста, сообщайте об ошибках. Для этого выпуска вы по-прежнему можете использовать старую версию gcov из GCC, которая доступна как gcov-4.2. 11919694 *обновлено*

Известные проблемы

Редактирование пользовательских интерфейсов

  • Пользовательские представления, добавленные в стек представлений в Interface Builder, могут оказаться в состоянии «смещенные представления» (несогласованном). В качестве обходного пути установите для пользовательского представления заполнитель внутреннего размера с соответствующими приоритетами сцепления содержимого и сопротивления сжатию. (15778653)

Тестирование

  • Автоматизированные тесты, запускаемые в iOS Simulator, могут завершиться ошибкой, подобной этой: Test target [test name] encountered an error (Test process exited with code -1)

    Попробуйте восстановить работу, закрыв и перезапустив симулятор. (15929053)

Xcode Server

  • Функции непрерывной интеграции (боты) Xcode 5.1 требуют OS X Server v3.1 (или более позднюю версию OS X Server 3.1 beta). 16225068 *обновлено*
  • Если на хосте сервера есть старые копии Xcode, Xcode Server иногда отображает все симуляторы. Пытайтесь использовать только симуляторы, подходящие для Xcode 5.1. (15465692 & 15153869)
  • Xcode Server будет предлагать «Все устройства» или «Все симуляторы», даже если нет подходящих критериев для проекта. Если вы выберете неподходящее устройство или симулятор, вы можете получить ошибку, подобную: xcodebuild: error: No destinations were specified with the -destination flag which were valid for the specified scheme .

    Чтобы этого избежать, укажите только допустимые устройства или симуляторы для вашего проекта. (15465222)

  • Иногда при попытке создать новый локальный репозиторий на OS X Server через Xcode, Xcode может отобразить сообщение об ошибке, подобное: xcode-select: note: no developer tools were found at '/Applications/Xcode.app', requesting install. Choose an option in the dialog to download the command line developer tools.

    Чтобы устранить эту проблему, следуйте инструкциям в диалоговом окне, отображаемом на хост-системе OS X Server. (15475078 & 15486464)

  • Иногда после обновления до Xcode 5.1 и OS X Server 3.1 при первом добавлении сервера вы можете увидеть ошибку, подобную: " is running a version of OS X Server that cannot be used with this version of Xcode."

    Закройте и перезапустите Xcode один раз, чтобы устранить это сообщение. 16217715 *обновлено*

iOS Simulator

  • Проблемы с производительностью могут возникнуть при запуске приложений в iOS Simulator на OS X Mavericks с симулированной версией ОС iOS 6.1 или более ранней. Обходное решение — отключить коалесценцию таймеров при использовании симулятора iOS 6.1 или более ранней версии, выполнив следующую команду в окне Терминала:

    sudo sysctl -w kern.timer.coalescing_enabled=0 (15501929)

  • iOS Simulator иногда перестает отвечать на аппаратную клавиатуру. Закрытие и перезапуск симулятора обычно устраняют эту проблему. (14642684)

Общие сведения

  • При последовательной проверке нескольких приложений с помощью Организатора Xcode могут выдаваться ошибочные предупреждения о идентификаторах пакетов. Если такие предупреждения возникают, закройте и перезапустите Xcode между проверками. 15113664 *обновлено*
  • Исполняемые файлы, созданные Xcode 5.1, могут аварийно завершать работу в OS X v10.5. (15852259) *обновлено*

Решенные проблемы

Тестирование

  • Макрос XCTAssertEqual (ранее STAssertEquals с использованием OCUnit) корректно сравнивает скалярные значения разных типов без приведения типов, например int и NSInteger. Он больше не может принимать нескалярные типы, такие как структуры, для сравнения. (14435933)

Общие сведения

  • Приложения OS X, требующие профиля подготовки, такие как использующие iCloud, теперь правильно собираются, подписываются кодом и запускаются. (15841159)

Устаревшие функции

  • OCUnit и фреймворк SenTestingKit устарели и будут удалены в будущих версиях Xcode. Исходный код, использующий OCUnit, выдает предупреждения при компиляции в Xcode 5.1. Перейдите на XCTest, используя команду меню «Редактировать > Рефакторинг > Конвертировать в XCTest…».
  • Фреймворк ATS устарел. Исходный код, использующий API ATS, будет выдавать предупреждения при компиляции. Для версии 10.8 потери функциональности не будет, но могут быть области, где производительность пострадает. Замените весь код ATS (включая ATSUI) на CoreText. Функциональность ATS будет удалена в будущих версиях OS X. Дополнительная информация об этом изменении доступна в «Руководство по программированию Core Text».