2015-11-25 58 views
3

我一直在試圖在工作中追蹤Qt 4.8.4(QtQuick 1.1)應用程序中的一些綁定循環。我做了一些實驗,發現在QtCreator 3.5.1由QML分析儀檢測到裝訂圈下面簡單的例子結果:頂級qml文件中的Repeater元素導致QtQuick 1.1(QtQuick 1.1)中的綁定循環(QtCreator 3.5.1)

import QtQuick 1.1 

Rectangle { 
    Repeater { 
     model: 1000 
     Text { text: "I'm item " + index } 
    } 
} 

如果我移動直放站元素出來叫Multiple.qml另一個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都會發生此問題。

Analyzer事件輸出還聲稱已爲最高main.qml 1001次(Repeater迭代次數+1)調用了「create」,但是使用massif似乎表明在檢測到綁定循環時內存使用率不會增加。根據分析儀的輸出,它看起來好像消耗了更多的時間。在我的機器上,main.qml create是71 ms vs 124 ms。

我做了一些進一步的實驗。如果我將Repeater元素放入另一個QML文件中,並使用Qt.creatComponent(從主qml文件中的「MyComp.qml」和<component>.createObject())實例化它,我也會得到一個綁定循環,如果MyComp.qml使用Multiple {},環消失

我也嘗試過的Qt 5.5.0的最新版本 - 。?同樣的問題

這是預期的行爲,它可以在QtCreator本身就是一個錯誤我不得不通過QtCreator搜索JIRA找不到任何相關問題

回答

1

我看不到任何由您顯示的簡單代碼創建的綁定循環的原因如果綁定循環只是由分析器報告而不是在行爲ual控制檯輸出的應用程序,我懷疑它是分析器中確定綁定循環的方式的錯誤,而不是代碼本身。