2010-09-22 51 views
1

我試圖實現一種技術類似於ImageBrowserViewAppearance示例代碼從蘋果(位於:http://developer.apple.com/library/mac/#samplecode/ImageBrowserViewAppearance/Introduction/Intro.html),其中CALayers生成的頂部IKImageBrowserView中的項目可自定義圖像瀏覽器中對象的外觀。CALayer閃爍時添加前景層IKImageBrowserView項目與垃圾收集

但是,當我打開垃圾回收時,出現了一個奇怪的問題,我可以在Apple示例代碼中重現它。只需打開目標中的垃圾收集,然後構建並啓動ImageBrowserAppearance示例應用程序。然後,使用「添加照片...」按鈕將一些照片添加到圖像瀏覽器。

現在,單擊IKImageBrowserView的空白部分,然後單擊並拖動以開始在瀏覽器視圖中選擇多個項目。當您拖動選擇框時,您應該注意到有時針對某些項目的針和光澤覆蓋層會閃爍並短暫出現在IKImageBrowserView的左下角。所有CALayers似乎偶爾會這樣做,我已經看到白色的周圍滑動區域也閃爍到左下角。

當我在我自己的代碼中模仿技術時,我(不奇怪)也可以重現此徽章閃爍。但是,垃圾收集關閉時,此問題會消失。

有人有什麼線索可能會出錯嗎?我想在我的應用程序中使用垃圾收集,並結合這種技術,但閃爍有點煩人。

+0

請提交錯誤報告。附上你的二進制文件並在這裏​​拋出錯誤#。 – bbum 2010-09-22 15:47:53

回答

1

我以前收到this的書籤,但Apple改變了URL和文本。幸好我引用它,當我bookmarked it

核心圖形API(石英2D)看到圖紙的編譯使用垃圾收集應用程序的性能大約降低25%。

「在繪圖性能降低25%」的文字已經改寫成「在代碼執行少量的開銷」,這是10.5。也許蘋果公司將其固定爲10.6。而你正在談論Core Animation,而不是Core Graphics。

儘管如此,Core Animation最終還是要和Core Graphics交談,也許這個性能問題還沒有消失,而且你被它咬了一口。

0

我被這個混淆了一下,可以確認我得到了打開GC運行項目的相同行爲。事實上,如果您足夠耐心並使用箭頭鍵逐個更改選擇一張圖像,最終會觸發該行爲,並且您可以看到視圖中一幅圖像中的圖層顯示在左下角而不是在圖像的頂部。我無法找到任何類型的圖案,或者是選擇了哪個圖像以及哪個圖像的圖層缺失之間的任何關係。我假設,無論出於何種原因,這些圖層都將它們的框架原點設置爲{0,0},但是如果我知道原因,就會發生。