Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка платформы GameKit ссылка класса GKAchievement

Опции
Развертывание Target:

На этой странице
Язык:

GKAchievement

Ваша игра использует a GKAchievement объект связаться с Игровым Центром о прогрессе местного игрока к завершению достижения.

Достижениями является отличный способ предоставить Вашим проигрывателям обратную связь и удовлетворение. Однако Вы не можете только добавить достижение к своей игре программно. Существует несколько шагов, которые необходимо выполнить для добавления достижений к игре:

  1. Перед добавлением достижений добавьте код для аутентификации местного игрока. Посмотрите Работу с Проигрывателями в Игровом Центре.

  2. Разработайте достижения своей игры. Посмотрите Разработку Достижения.

  3. Перейдите к Подключению iTunes и сконфигурируйте достижения для своей игры. Вы обеспечиваете, все данные должны были вывести на экран достижения к проигрывателю. Посмотрите Достижения Конфигурирования в Подключении iTunes.

  4. Добавьте код, чтобы сообщить о прогрессе местного игрока Игровому Центру. Путем хранения прогресса на Игровом Центре Вы также делаете успехи проигрывателя, видимые в Игровом приложении Центра. Для создания отчетов о прогрессе местного игрока относительно достижения игра обновляет percentComplete свойство объекта достижения и вызовов объект reportAchievements:withCompletionHandler: метод класса. Используйте этот метод при создании отчетов один или многократные достижения.

  5. Добавьте код для загрузки предыдущего прогресса местного игрока на достижениях от Игрового Центра. Для запроса прогресса местного игрока на достижениях вызовите loadAchievementsWithCompletionHandler: метод класса. Загрузите прогресс местного игрока вскоре после того, как будет успешно аутентифицироваться проигрыватель.

По умолчанию, когда достижение завершается, Гэйм Кит выводит на экран баннер уведомления к проигрывателю. Если Ваша игра хочет вывести на экран свой собственный пользовательский интерфейс достижения, можно препятствовать тому, чтобы баннер был выведен на экран путем установки showsCompletionBanner свойство достижения возражает против NOfalse прежде, чем сообщить о прогрессе проигрывателя.

Для очистки всего прогресса, местный игрок сделал на достижениях, вызовите resetAchievementsWithCompletionHandler: метод класса.

Наследование


Оператор импорта


Swift

import GameKit

Objective C

@import GameKit;

Доступность


Доступный в OS X v10.8 и позже.
  • Загрузки ранее представили прогресс достижения для местного игрока из Игрового Центра.

    Объявление

    Swift

    class func loadAchievementsWithCompletionHandler(_ completionHandler: (([AnyObject]!, NSError!) -> Void)!)

    Objective C

    + (void)loadAchievementsWithCompletionHandler:(void (^)(NSArray *achievements, NSError *error))completionHandler

    Параметры

    completionHandler

    Блок, который вызовут, когда завершается загрузка.

    Блок получает следующие параметры:

    achievements

    Массив GKAchievement объекты, который представляет весь прогресс, сообщили Игровому Центру местного игрока. Если ошибка произошла, этот параметр может быть не -nil, когда массив содержит любую информацию о достижении, Гэйм Кит смог выбрать.

    error

    Если ошибка произошла, этот объект описывает ошибку. Если работа завершилась успешно, это значение nil.

    Обсуждение

    Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Позже, когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке. Перечисление 1 показывает пример того, как загрузить достижения местного игрока.

    Прогресс достижения перечисления 1Loading
    • - (void) loadAchievements
    • { [GKAchievement loadAchievementsWithCompletionHandler:^(NSArray *achievements, NSError *error) {
    • if (error != nil)
    • {
    • NSLog(@"Error in loading achievements: %@", error);
    • }
    • if (achievements != nil)
    • {
    • // Process the array of achievements.
    • }
    • }];
    • }

    Оператор импорта

    Objective C

    @import GameKit;

    Swift

    import GameKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • Инициализирует новый объект достижения для местного игрока.

    Объявление

    Swift

    init!(identifier identifier: String!)

    Objective C

    - (instancetype)initWithIdentifier:(NSString *)identifier

    Параметры

    identifier

    Строка, соответствующая строку идентификатора для достижения, которое Вы создали для своей игры на Подключении iTunes.

    Возвращаемое значение

    Инициализированный объект достижения, или nil если произошла ошибка.

    Обсуждение

    Ваша игра инициализирует новый объект достижения только, когда она ранее не сообщила о прогрессе для того достижения. Если Ваша игра ранее сообщила о прогрессе относительно достижения, необходимо сначала получить текущий прогресс путем вызова loadAchievementsWithCompletionHandler: метод класса.

    Оператор импорта

    Objective C

    @import GameKit;

    Swift

    import GameKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • Инициализирует объект достижения для определенного проигрывателя.

    Объявление

    Swift

    init!(identifier identifier: String!, player player: GKPlayer!)

    Objective C

    - (instancetype)initWithIdentifier:(NSString *)identifier player:(GKPlayer *)player

    Параметры

    identifier

    Строка, соответствующая строку идентификатора для достижения, которое Вы создали для своей игры на Подключении iTunes.

    player

    A GKPlayer объект, идентифицирующий проигрыватель, связанный с указанным достижением.

    Возвращаемое значение

    Инициализированный объект достижения связался с определенным GKPlayer объект, или nil если произошла ошибка.

    Обсуждение

    Ваша игра инициализирует новый объект достижения для определенного проигрывателя только, когда она ранее не сообщила о прогрессе для того достижения. Только используйте этот метод для представления достижения участника при заканчивании основанного на повороте матча.

    Оператор импорта

    Objective C

    @import GameKit;

    Swift

    import GameKit

    Доступность

    Доступный в OS X v10.10 и позже.

  • Строка, используемая для однозначного определения определенного достижения объект, относится к.

    Объявление

    Swift

    var identifier: String!

    Objective C

    @property(copy, atomic) NSString *identifier

    Обсуждение

    identifier свойство должно соответствовать строку идентификатора для достижения, которое Вы создали для своей игры на Подключении iTunes.

    Оператор импорта

    Objective C

    @import GameKit;

    Swift

    import GameKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • percentComplete percentComplete Свойство

    Значение процента, утверждающее, как далеко проигрыватель развился на этом достижении.

    Объявление

    Swift

    var percentComplete: Double

    Objective C

    @property(assign, atomic) double percentComplete

    Обсуждение

    Значение по умолчанию для недавно инициализированного объекта достижения 0.0. Диапазон юридических значений между 0.0 и 100.0, включительно. Вы решаете, как тот процент вычисляется и когда он изменяется. Например, если бы проигрыватель зарабатывает достижение просто для обнаружения расположения в Вашей игре, то Вы просто сообщили бы о достижении, поскольку 100 процентов завершаются в первый раз, когда Вы сообщаете о прогрессе Игровому Центру. С другой стороны, для достижения как “Получение 10 пиратов”, Ваши инкременты механизма создания отчетов к 10 процентам каждый раз проигрыватель получают пирата.

    Оператор импорта

    Objective C

    @import GameKit;

    Swift

    import GameKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • Булево значение, утверждающее, завершил ли проигрыватель достижение. (только для чтения)

    Объявление

    Swift

    var completed: Bool { get }

    Objective C

    @property(readonly, getter=isCompleted, atomic) BOOL completed

    Обсуждение

    Значение этого свойства YEStrue если percentComplete свойство равно 100.0; иначе, это NOfalse.

    Оператор импорта

    Objective C

    @import GameKit;

    Swift

    import GameKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • О прошлом разе, которые развиваются на достижении, успешно сообщили Игровому Центру. (только для чтения)

    Объявление

    Swift

    @NSCopying var lastReportedDate: NSDate! { get }

    Objective C

    @property(copy, readonly, atomic) NSDate *lastReportedDate

    Обсуждение

    На недавно инициализированном объекте достижения это свойство содержит текущую дату.

    Оператор импорта

    Objective C

    @import GameKit;

    Swift

    import GameKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • Отчеты развиваются на массиве достижений.

    Объявление

    Swift

    class func reportAchievements(_ achievements: [AnyObject]!, withCompletionHandler completionHandler: ((NSError!) -> Void)!)

    Objective C

    + (void)reportAchievements:(NSArray *)achievements withCompletionHandler:(void (^)(NSError *error))completionHandler

    Параметры

    achievements

    Массив GKAchievement объекты, который содержит достижения, прогресс которых обновляется.

    completionHandler

    Блок, который вызовут после работы, завершается.

    Блок берет следующий параметр:

    error

    Если работа была успешна, это значение nil; иначе, этот параметр содержит объект, описывающий произошедшую проблему.

    Обсуждение

    Используйте этот метод класса каждый раз, когда необходимо представить одно или более обновлений достижения одновременно. Вызов этого метода сообщает о каждом из достижений в массиве. Обработка многократных достижений сразу позволяет всей работе быть обработанной более эффективно с помощью этого метода, как обработчик завершения только вызывают один раз. Reporting progress on an achievement показывает пример того, как сообщить о единственном достижении.

    Прогресс перечисления 2Reporting на достижении
    • - (void) reportAchievementIdentifier: (NSString*) identifier percentComplete: (float) percent
    • {
    • GKAchievement *achievement = [[GKAchievement alloc] initWithIdentifier: identifier];
    • if (achievement)
    • {
    • achievement.percentComplete = percent;
    • [GKAchievement reportAchievements:@[achievement] withCompletionHandler:^(NSError *error)
    • {
    • if (error != nil)
    • {
    • NSLog(@"Error in reporting achievements: %@", error);
    • }
    • }];
    • }
    • }

    Перечисление 3 показывает пример того, как сообщить о многократных достижениях для местного игрока.

    Прогресс перечисления 3Reporting на многократных достижениях
    • - (void) completeMultipleAchievements
    • {
    • GKAchievement *achievement1 = [[GKAchievement alloc] initWithIdentifier: @"DefeatedFinalBoss"];
    • GKAchievement *achievement2 = [[GKAchievement alloc] initWithIdentifier: @"FinishedTheGame"];
    • GKAchievement *achievement3 = [[GKAchievement alloc] initWithIdentifier: @"PlayerIsAwesome"];
    • achievement1.percentComplete = 100.0;
    • achievement2.percentComplete = 100.0;
    • achievement3.percentComplete = 100.0;
    • NSArray *achievementsToComplete = @[achievement1,achievement2,achievement3];
    • [GKAchievement reportAchievements: achievementsToComplete withCompletionHandler:^(NSError *error)
    • {
    • if (error != nil)
    • {
    • NSLog(@"Error in reporting achievements: %@", error);
    • }
    • }];
    • }
    • }

    Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Позже, когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке.

    Оператор импорта

    Objective C

    @import GameKit;

    Swift

    import GameKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • Сообщает список достижений и ограничивает проблемы, которые могут завершить те достижения.

    Объявление

    Swift

    class func reportAchievements(_ achievements: [AnyObject]!, withEligibleChallenges challenges: [AnyObject]!, withCompletionHandler completionHandler: ((NSError!) -> Void)!)

    Objective C

    + (void)reportAchievements:(NSArray *)achievements withEligibleChallenges:(NSArray *)challenges withCompletionHandler:(void (^)(NSError *error))completionHandler

    Параметры

    achievements

    Массив GKAchievement объекты, который представляет все достижения, о которых сообщают.

    challenges

    Массив GKChallenge объекты, который представляет ограниченные проблемы, связанные с достижениями, о которых сообщают. Если ошибка произошла, этот параметр может быть не -nil, когда массив содержит любую информацию о проблеме, Гэйм Кит смог выбрать.

    completionHandler

    Блок, который вызовут, когда завершается загрузка.

    Блок получает следующий параметр:

    error

    Если ошибка произошла, этот объект описывает ошибку. Если работа завершилась успешно, это значение nil.

    Обсуждение

    Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Позже, когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке.

    Оператор импорта

    Objective C

    @import GameKit;

    Swift

    import GameKit

    Доступность

    Доступный в OS X v10.10 и позже.

  • Булево значение, утверждающее, выведен ли баннер на экран, когда завершается достижение.

    Объявление

    Swift

    var showsCompletionBanner: Bool

    Objective C

    @property(assign, atomic) BOOL showsCompletionBanner

    Обсуждение

    Когда достижение завершается, и значение этого свойства YEStrue, баннер уведомления выведен на экран к проигрывателю для информирования их о завершенном достижении. Если значение этого свойства NOfalse, нет никакой визуальной индикации, что завершается достижение. Ваша игра должна установить это свойство в NOfalse обеспечить его собственный визуальный индикатор, что было заработано достижение. Значение по умолчанию NOfalse.

    Оператор импорта

    Objective C

    @import GameKit;

    Swift

    import GameKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • Сброс весь прогресс достижения для местного игрока.

    Объявление

    Swift

    class func resetAchievementsWithCompletionHandler(_ completionHandler: ((NSError!) -> Void)!)

    Objective C

    + (void)resetAchievementsWithCompletionHandler:(void (^)(NSError *error))completionHandler

    Параметры

    completionHandler

    Блок, который вызовут, когда завершается действие сброса.

    Блок берет следующий параметр:

    error

    Если работа была успешна, это значение nil; иначе, этот параметр содержит объект, описывающий произошедшую проблему.

    Обсуждение

    Вызов этого метода класса удаляет весь прогресс к достижениям, ранее сообщил для местного игрока. Скрытые достижения, которые были ранее видимы, теперь скрыты снова. Перечисление 4 показывает пример того, как сбросить достижения Вашей игры.

    Прогресс достижения перечисления 4Resetting
    • - (void) resetAchievements
    • {
    • [GKAchievement resetAchievementsWithCompletionHandler:^(NSError *error)
    • {
    • if (error != nil)
    • NSLog(@"Could not reset achievements due to %@", error);
    • }];
    • }

    Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Позже, когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке.

    Оператор импорта

    Objective C

    @import GameKit;

    Swift

    import GameKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • Обеспечивает проблема составляют контроллер представления с предварительно отформатированным сообщением для достижения и предварительно выобранных объектов GKPlayer.

    Объявление

    Swift

    func challengeComposeControllerWithMessage(_ message: String!, players players: [AnyObject]!, completionHandler completionHandler: GKChallengeComposeCompletionBlock!) -> NSViewController!

    Objective C

    - (NSViewController *)challengeComposeControllerWithMessage:(NSString *)message players:(NSArray *)players completionHandler:(GKChallengeComposeCompletionBlock)completionHandler

    Параметры

    message

    Сообщение, отправляющееся в другие проигрыватели. Это сообщение может быть отредактировано проигрывателем.

    players

    Массив GKPlayer объекты, который содержит идентификаторы проигрывателя, в которые состоит в том, чтобы быть отправлена проблема.

    completionHandler

    Блок, который вызовут после контроллера представления, был выведен на экран. Содержит причину, обработчик вызвали и все идентификаторы проигрывателя, в которые была отправлена проблема.

    Возвращаемое значение

    A UIViewController представление, содержащее идентификаторы проигрывателя и сообщение проблемы.

    Обсуждение

    Контроллер представления возвратился, представлен модально от контроллера вида сверху. После того, как контроллер представления выведен на экран, и проигрыватель отправляет или отменяет проблему, блок обработчика завершения вызывают.

    Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Позже, когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке.

    Оператор импорта

    Objective C

    @import GameKit;

    Swift

    import GameKit

    Доступность

    Доступный в OS X v10.10 и позже.

  • Находит подмножество проигрывателей, которые могут заработать достижение.

    Объявление

    Swift

    func selectChallengeablePlayers(_ players: [AnyObject]!, withCompletionHandler completionHandler: (([AnyObject]!, NSError!) -> Void)!)

    Objective C

    - (void)selectChallengeablePlayers:(NSArray *)players withCompletionHandler:(void (^)(NSArray *challengeablePlayers, NSError *error))completionHandler

    Параметры

    players

    Массив GKPlayer объекты, содержащие список проигрывателей. Список проигрывателей используется для нахождения тех проигрывателей, которые приемлемы зарабатывать достижение.

    completionHandler

    Блок, который вызовут, когда завершается загрузка.

    Блок получает следующие параметры:

    challengeablePlayers

    Массив GKPlayer объекты, представляющие проигрыватели в исходном массиве, которые в состоянии завершить проблему. Если ошибка произошла, этот параметр может быть не -nil, когда массив содержит любую информацию о достижении, Гэйм Кит смог выбрать.

    error

    Если ошибка произошла, этот объект описывает ошибку. Если работа завершилась успешно, это значение nil.

    Обсуждение

    Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Позже, когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке. Перечисление 5 показывает, как счесть проигрыватели имеющими право быть оспариваемым завершить достижение.

    Перечисление 5Determining список проигрывателей, кто может завершить проблему достижения
    • - (void) challengePlayersToCompleteAchievement: (GKAchievement*) achievement
    • {
    • [achievement selectChallengeablePlayers:[GKLocalPlayer localPlayer].friends withCompletionHandler:^(NSArray *challengeablePlayers, NSError *error) {
    • if (challengeablePlayers)
    • {
    • //send a challenge to each of the eligible players.
    • }
    • }];
    • }

    Оператор импорта

    Objective C

    @import GameKit;

    Swift

    import GameKit

    Доступность

    Доступный в OS X v10.10 и позже.

  • A GKPlayer объект раньше идентифицировал проигрыватель, кто заработал достижение. (только для чтения)

    Объявление

    Swift

    var player: GKPlayer! { get }

    Objective C

    @property(readonly, retain, atomic) GKPlayer *player

    Оператор импорта

    Objective C

    @import GameKit;

    Swift

    import GameKit

    Доступность

    Доступный в OS X v10.10 и позже.

  • скрытый скрытый (OS X v10.10) Свойство

    Булево значение, утверждающее, держится ли это достижение обычно в секрете от проигрывателя. (только для чтения)

    Оператор осуждения

    Используйте hidden свойство на GKAchievementDescription класс вместо этого.

    Объявление

    Swift

    var hidden: Bool { get }

    Objective C

    @property(assign, getter=isHidden, readonly, atomic) BOOL hidden

    Оператор импорта

    Objective C

    @import GameKit;

    Swift

    import GameKit

    Доступность

    Доступный в OS X v10.8 и позже.

    Осуждаемый в OS X v10.10.

  • Выпустите вызов достижения списку проигрывателей.

    Объявление

    Swift

    func issueChallengeToPlayers(_ playerIDs: [AnyObject]!, message message: String!)

    Objective C

    - (void)issueChallengeToPlayers:(NSArray *)playerIDs message:(NSString *)message

    Параметры

    playerIDs

    Массив NSString объекты, содержащие идентификаторы проигрывателя проигрывателей, являющихся оспариваемым.

    message

    Текстовое сообщение для отображения к оспариваемым проигрывателям.

    Обсуждение

    Этот метод должен использоваться только для реализации собственного пользовательского интерфейса проблемы. Когда местный игрок направляет Вас, чтобы сделать так, необходимо только выпустить проблемы.

    Если достижение отмечено, как скрытый в Подключении iTunes, или если оспариваемый проигрыватель уже заработал достижение, и это не отмечено как replayable, то проблема не выпущена.

    Оператор импорта

    Objective C

    @import GameKit;

    Swift

    import GameKit

    Доступность

    Доступный в OS X v10.8 и позже.

    Осуждаемый в OS X v10.10.

  • Сообщает прогресс проигрывателя Игровому Центру.

    Объявление

    Swift

    func reportAchievementWithCompletionHandler(_ completionHandler: ((NSError!) -> Void)!)

    Objective C

    - (void)reportAchievementWithCompletionHandler:(void (^)(NSError *error))completionHandler

    Параметры

    completionHandler

    Блок, который вызовут после работы, завершается.

    Блок берет следующий параметр:

    error

    Если работа была успешна, это значение nil; иначе, этот параметр содержит объект, описывающий произошедшую проблему.

    Обсуждение

    Когда проигрыватель делает успехи к завершению достижения, Ваша игра передает прогресс проигрывателя в Игровой Центр путем вызова этого метода. Объект достижения неявно связывается к местному игроку, аутентифицировавшемуся, когда создавался объект; когда тот же местный игрок все еще аутентифицируется на устройстве, Ваша игра должна только сообщить о прогрессе.

    Когда о прогрессе успешно сообщают, успехам добиваются видимые, если это было ранее скрыто. percentComplete и lastReportedDate значения свойств, сохраненные на Игровом Центре, обновляются если новое percentComplete значение больше, чем значение, ранее сохраненное на Игровом Центре. если значение percentComplete свойство было равно 100.0, тогда достижение отмечено, как завершено, и баннер может быть показан проигрывателю.

    Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Фоновая задача автоматически обрабатывает сетевые ошибки, снова посылая данные, пока не завершается задача. Когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке.

    Оператор импорта

    Objective C

    @import GameKit;

    Swift

    import GameKit

    Доступность

    Доступный в OS X v10.8 и позже.

    Осуждаемый в OS X v10.10.

  • Находит подмножество проигрывателей, которые могут заработать достижение.

    Объявление

    Swift

    func selectChallengeablePlayerIDs(_ playerIDs: [AnyObject]!, withCompletionHandler completionHandler: (([AnyObject]!, NSError!) -> Void)!)

    Objective C

    - (void)selectChallengeablePlayerIDs:(NSArray *)playerIDs withCompletionHandler:(void (^)(NSArray *challengeablePlayerIDs, NSError *error))completionHandler

    Параметры

    playerIDs

    Массив NSString объекты, содержащие список проигрывателей. Список проигрывателей используется для нахождения тех проигрывателей, которые приемлемы зарабатывать достижение.

    completionHandler

    Блок, который вызовут, когда завершается загрузка.

    Блок получает следующие параметры:

    challengeablePlayerIDs

    Массив идентификаторов проигрывателя, представляющих проигрыватели в исходном массиве, которые в состоянии завершить проблему. Если ошибка произошла, этот параметр может быть не -nil, когда массив содержит любую информацию о достижении, Гэйм Кит смог выбрать.

    error

    Если ошибка произошла, этот объект описывает ошибку. Если работа завершилась успешно, это значение nil.

    Обсуждение

    Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Позже, когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке.

    Оператор импорта

    Objective C

    @import GameKit;

    Swift

    import GameKit

    Доступность

    Доступный в OS X v10.8 и позже.

    Осуждаемый в OS X v10.10.