2012-04-11 35 views
2

我有一個NSScrollView我添加了一堆NSViews有一個NSImage子視圖。基本上它是滾動視圖中包含的一長串縮略圖。直到在滾動視圖中有成千上萬的圖像(因爲沒有創建單獨的縮略圖圖像,圖像很大,但縮小到縮略圖大小)。可可 - NSScrollView與大量的項目

看起來最好的做法是將當前未顯示在滾動視圖中的圖像解除分配,並在它們進入視圖時將它們加載回內存。 NSView是否支持此類通知(類似於iOS上的viewWillAppear:viewWillDisappear:)。

此外,在ARC模式下,如何明確告訴操作系統卸載圖像?將設置NSImage*爲零的伎倆?

回答

0

我認爲最好的方法是創建一個自定義NSView子類,它擁有圖像子視圖:

  • 代碼你drawRect:方法,所以只有那些與dirtyRect相交的圖像繪製。
  • 將您的自定義視圖嵌入爲NSScrollView的子視圖。
  • 作爲圖像添加/刪除(如果這甚至有可能),你要重新計算您的視圖大小,並呼籲使滾動視圖知道要改變滾動條長度等
  • 覆蓋setFrameSize重新佈局如果在視圖大小調整時(如果您在視圖中具有佈局的概念)更改佈局,則可以修改大小。

你不要在你的問題中說你面臨什麼問題;他們是記憶還是表現(或兩者兼而有之)?我不認爲不斷釋放和重新分配子圖將以任何方式幫助你。

相關問題