Я пытаюсь найти некоторые привязные петли в приложении Qt 4.8.4 (QtQuick 1.1) на работе. Я сделал несколько экспериментов и обнаружил следующие основные примеров результатов в привязке контура, обнаруженный в QML Analyzer QtCreator 3.5.1:Элемент ретранслятора в файле qml верхнего уровня вызывает цикл привязки в QtQuick 1.1 (QtCreator 3.5.1)
import QtQuick 1.1
Rectangle {
Repeater {
model: 1000
Text { text: "I'm item " + index }
}
}
Если переместить элемент повторителя к другому файлу под названием QML Multiple.qml, который содержит :
import QtQuick 1.1
Repeater {
model: 1000
Text { text: "I'm item " + index }
}
и изменить main.qml к следующему, связывающая цикл уходит:
import QtQuick 1.1
Rectangle {
Multiple {}
}
1000 итераций не является реальным примером. Я использовал его для увеличения некоторых дельтах времени в QML Profiler. Проблема возникает с любым количеством итераций> = 1.
Вывод событий анализатора также утверждает, что «create» был вызван для верхнего main.qml 1001 раз (количество итераций повторителя + 1), однако анализ с массивом кажется, указывает на то, что использование памяти не увеличивается при обнаружении цикла привязки. Кажется, что он потребляет дополнительное время в зависимости от выхода анализатора. На моей машине main.qml create - 71 мс против 124 мс.
Я сделал несколько дальнейших экспериментов. Если я поместил элемент Repeater в другой файл QML и создам его с помощью Qt.creatComponent («MyComp.qml» и <component>.createObject()
из основного qml-файла, я также получу цикл привязки. Если MyComp.qml использует Multiple {} вместо этого, привязка петля уходит
Я также попытался более позднюю версию Qt 5.5.0 -..? Тот же вопрос
это ожидаемое поведение Может быть ошибка в самой QtCreator я был поиск через QtCreator Jira и не удалось найти какие-либо связанные с этим проблемы.