はじめに
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, ..., *) {
...