recursiveDescription


recursiveDescriptionメソッドを使うと、UIViewの中身を階層的に表示できます。そんなメソッドみたことない?そりゃそうです。ドキュメントに記載されてませんから。普通にメソッド呼び出しすると怒られちゃうので、performSelectorを使って呼び出しちゃいましょう。

使用例

NSLog(@"%@", [viewController1.view performSelector:@selector(recursiveDescription)]);

実行結果

<UIView: 0x7665600; frame = (0 0; 320 411); autoresize = W+H; layer = <CALayer: 0x76656b0>>
   | <UILabel: 0x7665770; frame = (20 79; 280 43); text = 'First View'; clipsToBounds = YES; opaque = NO; autoresize = W+BM; userInteractionEnabled = NO; layer = <CALayer: 0x7665830>>
   | <UITextView: 0x90f8000; frame = (20 162; 280 88); text = 'Loaded by the first view
...'; clipsToBounds = YES; opaque = NO; autoresize = W+BM; userInteractionEnabled = NO; gestureRecognizers = <NSArray: 0x7667070>; layer = <CALayer: 0x7666580>; contentOffset: {0, 0}>
   |    | <UITextSelectionView: 0x7666850; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <CALayer: 0x7666920>>
   |    | <UIImageView: 0x7667840; frame = (273 0; 7 88); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x76679f0>>
   |    | <UIWebDocumentView: 0x9100400; frame = (0 0; 280 88); text = 'Loaded by the first view
...'; opaque = NO; userInteractionEnabled = NO; gestureRecognizers = <NSArray: 0x715e4d0>; layer = <UIWebLayer: 0x715cf20>>
   |    |    | <TileHostLayer: 0x715d5b0> (layer)
   |    |    |    | <TileLayer: 0x8a99640> (layer)
   |    | <UITextSelectionView: 0x8a8abc0; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <CALayer: 0x8a8ac40>>

便利なメソッドだけど、ドキュメントに記載されていない脱法メソッドなので、公開申請する前にはきっちりコメントアウトするように!

Comments

comments

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です