Печать изменений и настраиваемый модификатор отладки

Метод внутреннего API SwiftUI - «Self._printChanges ()»

SwiftUI предоставляет необычный метод, предназначенный только для отладки, который мы можем использовать, чтобы определить, какое изменение привело к перезагрузке представления. Стратегия явно предназначена для исследования. Это удивительно полезно в тех случаях, когда вы видите, что представление повторно вызывает свойство тела, но вы не знаете почему.

Несколько замечаний из приведенного выше кода:

  • Self необходим, поскольку _printChanges() - статический метод.
  • Self._printChanges() - он должен вызываться внутри свойства body. Это означает, что вам нужно будет на короткое время добавить явное ключевое слово return в ваш обычный код представления.
  • Все представления по умолчанию имеют _printChanges()
  • Функции и свойства, начинающиеся с подчеркивания (_), являются частью частного API, поэтому вы не увидите никакой документации по этому поводу.

В приведенном выше примере, когда вы начнете нажимать кнопку, вы увидите что-то в консоли. Это означает, что в определенном свойстве произошло изменение. Это означает, что SwiftUI отображает представление, поскольку изменение свойства имеет какое-то отношение к пользовательскому интерфейсу.

Когда вы работаете над приложением, в котором вы будете использовать другую оболочку свойств, которая заставляет представление визуализироваться несколько раз, и если вы используете Self._printChanges(), вы увидите, что несколько из них печатаются, но не волнуйтесь, они довольно легкие согласно Apple и это убьет производительность вашего приложения.

Важный

SwiftUI будет отображать ваше представление только в том случае, если тело требует переоценки при изменении свойства.
Если какая-либо из переменных состояния, которые вы используете в своем представлении, не используется для вашего пользовательского интерфейса, вы не будете воспринимать любые изменения, напечатанные для этого представления, и SwiftUI не будет отображать для этого свойства.

Когда State property печатается с использованием print(), SwiftUI повторно визуализирует ваше представление, поэтому избегайте использования print и начните использовать _printChanges()

Помните, что для использования этого API ваше приложение должно быть на iOS 15.

Использовать цветной фон

Когда вы работаете с различными компонентами пользовательского интерфейса на экране, иногда это очень сбивает с толку, и вы не знаете, сколько места в стеке занимает каждый компонент.

Один из способов определить это - выбрать элемент, и вы увидите, что элемент представлен в обзоре, но это не всегда так просто, и мы не можем постоянно его просматривать.

Я решил эту проблему, используя модификатор «debug only background-color» в моих представлениях, чтобы я мог видеть цвета в представлении и изменять их соответствующим образом.

И вы используете это так:

Надеюсь, это поможет вам разобраться в некоторых проблемах. Пожалуйста, дайте мне знать, если у вас есть здесь какие-либо идеи по отладке. Также, если вас интересуют советы и рекомендации по SwiftUI, пожалуйста, ознакомьтесь с этой статьей. Спасибо, удачи.