Objective-C/Cocoa : Uploading Images, 工作内存和存储

标签 objective-c cocoa memory image save

我正在将最初使用 java 的应用程序移植到 cocoa 中,但我正在重写它以使其变得更好,因为无论如何我更喜欢 cocoa 。

我在应用程序中遇到的问题之一是,当您向其上传图像时,我创建了图像(例如 NSImage 对象),然后我只是将它们放在内存中,我上传的图像越多他们占用了更多的内存,最终我的内存耗尽了。

我的问题是:如果我要让用户在 cocoa 中将图像上传到此应用程序,我应该如何存储它们?我不仅仅想复制文件路径,因为我希望保存的内容包含图像等。有没有办法上传图像并将其复制到仅适用于我的应用程序的不同位置?然后根据需要使用新路径名加载该图像?

只是我希望将这一切都整合起来。我将通过将一个“主”对象归档到 NSData* 中来实现保存 - 所以我希望图像能够随之保存。

是否有一个临时位置可以将图像写入磁盘以用于我的应用程序,然后当我保存时,它们将全部存档到一个文件中?另外,我该怎么做?谢谢。

最佳答案

如果您只想临时存储图片,可以将图片存储在调用 NSTemporaryDirectory() 得到的临时文件夹中。 。这样您就可以仅在需要显示图像时加载它们。

如果您想将图像与文档一起保存,那么您应该研究使用文档的包格式,以便文档实际上是包含图像和存档数据文件的文件夹。您可以使用 NSFileWrapper 的各种方法创建包含文档包的所有文件的文件包装器。然后你将实现-fileWrapperOfType:error:方法NSDocument为了处理保存。

这将允许您存储未更改的图像,然后在需要时从文档包中延迟加载它们。

关于Objective-C/Cocoa : Uploading Images, 工作内存和存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2250166/

相关文章:

objective-c - Cocoa Mac 应用程序,将 NSTableColumn 绑定(bind)到实体

c++ - 错误写入 Excel 文件 - C++

java - 如何找出一个对象有多少引用?

ios - Objective-C 函数通过在方法签名中指定关系来更新 Core Data 关系

iphone - 在 iPhone 上拆分字符串前缀的数字

objective-c - AVPlayerLooper 不会循环播放多个视频

c - 为什么多次调用 calloc 会使我的应用程序崩溃?

ios - 如何从父 ios 应用程序调用 watchkit 扩展中的方法

objective-c - 使 Cocoa 应用程序无法退出

cocoa - 在 Cocoa 应用程序中使用 Illustrator .ai 文件