我有一个NSScrollView
,我正在添加一堆NSViews
子视图。NSImage
。基本上它是滚动视图中包含的一长串缩略图。
一切都很好......直到滚动视图中有数千个图像(因为没有创建单独的缩略图图像,图像很大但缩小到缩略图大小)。
似乎最好的做法是取消当前未在滚动视图中显示的图像,并在它们进入视图时将它们加载回内存。 NSView
是否支持此类通知(类似于iOS上的viewWillAppear:
和viewWillDisappear:
)。
此外,在ARC模式下,如何明确告诉操作系统卸载图像?将NSImage*
设置为nil可以做到吗?
答案 0 :(得分:0)
我认为最好的方法是创建一个拥有图片子视图的自定义NSView
子类:
drawRect:
方法进行编码,以便只绘制与 dirtyRect 相交的图像。NSScrollView
。[super setFrameSize:]
,以便滚动视图知道更改滚动条长度等。setFrameSize
以重新布局和修改大小。您在问题中没有说明您面临的问题;他们是记忆还是表现(或两者兼而有之)?我不认为不断释放和重新分配子图像会对你有所帮助。