2011-11-27 62 views
4

通用NSPasteboard存储用户已复制的内容。例如,像100个图像和1000个单词。是否有一般NSPasteboard的大小限制,以便用户可以复制说..最多99图像?一般NSPasteboard占用多少内存?

什么定义了这个限制?内存或高清或..?

回答

4

是的。

在粘贴板的大小上没有记录强制限制(我可以找到)。但是,一切都是有限的。如果您将过多的东西复制到任何粘贴板(无论是通用粘贴板,查找粘贴板,拖动粘贴板还是其他任何东西),您都可能遇到无证限制,或者导致系统进入分页。 (即使最后一部分也没有保证;上次检查时,粘贴板使用RAM,但理论上现在或将来都可以写入磁盘。)

如果您计划复制大量的数据,我建议代之以承诺。如何做到这一点取决于您是使用旧的基于类型和数据的API,还是使用较新的基于项目的API。这是更多的工作,但这意味着只有当用户将其粘贴到某个位置时才需要输入数据。

+0

+1有希望。 – spudwaffle

+4

只是为了澄清,有希望的意思是,不是立即将数据发送到粘贴板,而是发送承诺,在实际需要时(例如,当用户实际使用粘贴命令时)发送数据。一般来说,当您的应用程序将退出时,您还需要提供数据,但如果数据非常大,您可以提示用户查看是否要放弃粘贴板,这正是Photoshop所做的。 –

+1

为了澄清,我并没有声称Photoshop是用户交互设计(!)的典范,但它确实能够正确处理非常大的剪贴板内容。 –