LoginSignup
9

More than 5 years have passed since last update.

watchOS用CマクロとSwift API Availability

Last updated at Posted at 2015-09-16

はじめに

Xcode 7(iOS 9.0 / OS X 10.11 / watchOS 2.0, Apple LLVM version 7.0.0 / Apple Swift version 2.0 / clang-700.0.72 / swiftlang-700.0.59)から、追加されたwatchOS用CマクロとSwift API Availabilityを紹介する。

watchOS用Cマクロ

TARGET_OS_WATCH

TargetConditionals.h

#define TARGET_OS_IPHONE 1 
#define TARGET_OS_IOS    0
#define TARGET_OS_WATCH  1

Apple Watchで実行するコードを生成するときに定義される(TARGET_OS_IPHONEも1)。
なお、iOSの場合は以下のように定義される。

#define TARGET_OS_IPHONE 1 
#define TARGET_OS_IOS    1
#define TARGET_OS_WATCH  0

__WATCHOS_1_0, __WATCHOS_2_0

Availability.h

#define __WATCHOS_1_0    10000
#define __WATCHOS_2_0    20000

watchOSのバージョン番号を定義する。

__WATCHOS_UNAVAILABLE, __WATCHOS_PROHIBITED

Availability.h

#define __WATCHOS_UNAVAILABLE __OS_AVAILABILITY(watchos,unavailable)
#define __WATCHOS_PROHIBITED  __OS_AVAILABILITY(watchos,unavailable)

両者ともwatchOSで利用不可を定義する。

__WATCHOS_AVAILABLE

Availability.h

#define __WATCHOS_AVAILABLE(_vers) __OS_AVAILABILITY(watchos,introduced=_vers)

指定したバージョンのwatchOSから利用であることを定義する。

__WATCHOS_DEPRECATED(_start, _dep, _msg)

Availability.h

#define __WATCHOS_DEPRECATED(_start, _dep, _msg) __WATCHOS_AVAILABLE(_start) __OS_AVAILABILITY_MSG(watchos,deprecated=_dep,_msg)

_startで指定したバージョンのwatchOSから利用可能で、_depで指定したバージョンのwatchOSから非推奨であることを定義する。_msgで代案を指示するメッセージを指定する。

__WATCH_OS_VERSION_MIN_REQUIRED, __WATCH_OS_VERSION_MAX_ALLOWED

AvailabilityInternal.h

#ifndef __WATCH_OS_VERSION_MIN_REQUIRED
    #ifdef __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__
        /* compiler sets __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ when -mwatchos-version-min is used */
        #define __WATCH_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__
        #define __WATCH_OS_VERSION_MAX_ALLOWED 20000
        /* for compatibility with existing code.  New code should use platform specific checks */
        #define __IPHONE_OS_VERSION_MIN_REQUIRED 90000
    #endif
#endif

アプリケーションによってサポートされる最小/最大のwatchOSのバージョンを定義する。
-mwatchos-version-minを指定すると、コンパイラがその値を__WATCH_OS_VERSION_MIN_REQUIREDに設定する。

Swift API Availability

#availableのプラットフォーム名にwatchOSを指定する。

if #available(watchOS 2.1, ..., *) {
    ...

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9