Comments 7
Опечатку CALAyer на CALayer исправляем и пробуем:
получаем:
Причина? Перемудрили с кастами. Операция приведения типа имеет более высокий приоретет перед операцией точка. Поэтому вы результат [UIApplication sharedApplication] приводите к типу MyAppDelegate*. Вы же рассчитывали на такой приоретет: (MyAppDelegate *)([UIApplication sharedApplication].delegate). Да, Objective-C не хватает синтаксиса приведения типов из C++.
Да и не нужен этот каст, вообще. И каст к UIWindow* тоже не нужен. Правильная команда, без ненужных кастов, выглядит так:
expr -- ((CALayer *)[(UIWindow *)[(MyAppDelegate *)[UIApplication sharedApplication].delegate window] layer]).speed = 0.2
получаем:
error: property 'delegate' not found on object of type 'id'
error: 1 errors parsing expression
Причина? Перемудрили с кастами. Операция приведения типа имеет более высокий приоретет перед операцией точка. Поэтому вы результат [UIApplication sharedApplication] приводите к типу MyAppDelegate*. Вы же рассчитывали на такой приоретет: (MyAppDelegate *)([UIApplication sharedApplication].delegate). Да, Objective-C не хватает синтаксиса приведения типов из C++.
Да и не нужен этот каст, вообще. И каст к UIWindow* тоже не нужен. Правильная команда, без ненужных кастов, выглядит так:
expr -- ((CALayer *)[[[[UIApplication sharedApplication] delegate] window] layer]).speed = 0.2
+1
Ошибку поправил. Больше спасибо, за комментарий.
Я уже по привычке набираю приведение всех типов, где возвращается id, забыл что window часть UIApplicationDelegate.
Я уже по привычке набираю приведение всех типов, где возвращается id, забыл что window часть UIApplicationDelegate.
0
Аналогично. Запускаем:
Получаем:
Исправляем:
Получаем ожидаемый результат:
Вы бы проверили каждую команду на работоспособность, прежде чем людям советовать.
po [(MyAppDelegate *)[UIApplication sharedApplication].delegate window]
Получаем:
error: no known method '+sharedApplication'; cast the message send to the method's return type
error: 1 errors parsing expression
Исправляем:
po [[[UIApplication sharedApplication] delegate] window]
Получаем ожидаемый результат:
<UIWindow: 0x15d6f2f0; frame = (0 0; 320 480); gestureRecognizers = <NSArray: 0x15d6d8a0>; layer = <UIWindowLayer: 0x15d6d720>>
Вы бы проверили каждую команду на работоспособность, прежде чем людям советовать.
0
Ну или же вот так
Я предпочитаю в коде использовать NSObject.property, нежели [NSObject getter]. Использование их в lldb приводит к излишним скобкам, но привычка.
po [((UIApplication *)[UIApplication sharedApplication]).delegate window]
Я предпочитаю в коде использовать NSObject.property, нежели [NSObject getter]. Использование их в lldb приводит к излишним скобкам, но привычка.
0
Иерархия всех вьюх без аддонов:
po [[UIWindow keyWindow] recursiveDescription]
0
Да, так и есть. Я использовал самый популярный набор задач. Но аналога для pvc нет. А если говорить о UIView, то нельзя вывести superview рекурсивно. Но с аддоном можно — pviews --up <_pointer_> . То есть ли Вы остановились где на breakpoint и хотите посмотреть, не всю иерархию UIView, а только относительно конкретной UIView(причем вврех), используйте приведенную команду.
0
Sign up to leave a comment.
Облегчаем поддержку iOS приложения. Часть 1 — не отрываясь от Xcode