LoginSignup
4
4

More than 5 years have passed since last update.

tvOS用CマクロとSwift API Availability

Posted at

はじめに

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

tvOS用Cマクロ

TARGET_OS_TV

TargetConditionals.h

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

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

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

__TVOS_9_0

Availability.h

#define __TVOS_9_0       90000

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

__TVOS_UNAVAILABLE, __TVOS_PROHIBITED

Availability.h

#define __TVOS_UNAVAILABLE __OS_AVAILABILITY(tvos,unavailable)
#define __TVOS_PROHIBITED  __OS_AVAILABILITY(tvos,unavailable)

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

__TVOS_AVAILABLE

Availability.h

#define __TVOS_AVAILABLE(_vers) __OS_AVAILABILITY(tvos,introduced=_vers)

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

__TVOS_DEPRECATED(_start, _dep, _msg)

Availability.h

#define __TVOS_DEPRECATED(_start, _dep, _msg) __TVOS_AVAILABLE(_start) __OS_AVAILABILITY_MSG(tvos,deprecated=_dep,_msg)

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

__TV_OS_VERSION_MIN_REQUIRED, __TV_OS_VERSION_MAX_ALLOWED

AvailabilityInternal.h

#ifndef __TV_OS_VERSION_MIN_REQUIRED
    #ifdef __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__
        /* compiler sets __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ when -mtvos-version-min is used */
        #define __TV_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__
        #define __TV_OS_VERSION_MAX_ALLOWED __IPHONE_9_0
        /* for compatibility with existing code.  New code should use platform specific checks */
        #define __IPHONE_OS_VERSION_MIN_REQUIRED 90000
    #endif
#endif

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

Swift API Availability

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

if #available(tvOS 9.1, ..., *) {
    ...
4
4
0

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
4
4