5408


私が作成しているアプリで、起動中に表示している `UIWindow`
をログ出力(`recursiveDescription`)したところ下記のクラスが出てきました。

意図的に追加した覚えのないクラスです。それぞれ何の役割を持ったクラスか教えてください。

起動は Xcode 6.1.1 のシミュレータ iPhone6 で iOS8 になります。

  * `UILayoutContainerView`
  * `UINavigationTransitionView`
  * `UIViewControllerWrapperView`


CC BY-SA 3.0
2015-01-27T01:24:42.847
5378
2015-01-27T07:26:06.647
2015-01-27T06:51:19.713
4978
7364
question
ios objective-c uikit
追加した覚えのないクラスがある


それらは、Apple の `UIKit.framework` 内プライベートAPI の一部なのでそれ自体が何なのかの正しく答えられる人は少数だと思いますが、
GitHub
を簡単に検索してみると、ランタイムの情報をヘッダとしてダンプした人が結構いました。[ヘッダとしての内部情報](https://github.com/nst/iOS-
Runtime-Headers/tree/master/Frameworks/UIKit.framework)は見ることはできます。

  * [`UILayoutContainerView.h`](https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/UILayoutContainerView.h)
  * [`UINavigationTransitionView.h`](https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/UINavigationTransitionView.h)
  * [`UIViewControllerWrapperView.h`](https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/UIViewControllerWrapperView.h)

機能は、メソッドから少しだけ、類推できると思います。`UINavigationTransitionView` についていえば、 `_fromView` から
`_toView` への画面遷移アニメーション担当をしていそうです。 `UILayoutContainerView`
はレイアウト用のView保持クラスという名前ですが、目的はアニメーション用らしい。 `UIViewControllerWrapperView.h`
はわかりません。 メソッドを上書きしたり、呼び出すことで確かめられそうですね。

... ですが、一般的に言うとこのようなプライベートAPIはいつ変更されるかわからないので、利用（呼び出し）は避ける方が良いです。

開発者的にも、 _iOS Developer Program License Agreement_ を見ると、

> APIs and Functionality:
>
> 3.3.1 Applications may only use Documented APIs in the manner prescribed by
> Apple and must not use or call any private APIs.

と書かれている上、[ _App Store Review Guidelines_](https://developer.apple.com/app-
store/review/guidelines/) にも

> 2.4 Apps that include undocumented or hidden features inconsistent with the
> description of the App will be rejected
>
> 2.5 Apps that use non-public APIs will be rejected

と書かれていますので、利用は避ける方が良いです。

参考: [What is the role of UINavigationTransitionView, UILayoutContainerView and
UIViewControllerWrapperView](https://stackoverflow.com/questions/15322916/what-
is-the-role-of-uinavigationtransitionview-uilayoutcontainerview-and-uiview)


CC BY-SA 3.0
2015-01-27T07:26:06.647
5408
2015-01-27T07:26:06.647
2017-05-23T12:38:56.083
-1
4978
5378
answer