Objective-C / Cocoa:上传图像、工作内存和存储

Posted

技术标签:

【中文标题】Objective-C / Cocoa:上传图像、工作内存和存储【英文标题】:Objective-C / Cocoa: Uploading Images, Working Memory, And Storage 【发布时间】:2010-02-12 07:02:15 【问题描述】:

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

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

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

只有我希望将所有内容合并。我将通过将一个“主”对象归档到一个 NSData* 中来实现保存 - 所以我希望图像与它一起保存。

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

【问题讨论】:

【参考方案1】:

如果您只想临时存储图像,可以将图像存储在通过调用NSTemporaryDirectory() 获得的临时文件夹中。然后,您将能够仅在需要显示图像时加载它们。

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

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

【讨论】:

非常感谢!我真的很感谢你不遗余力地帮助我。这是完美的,解决了我的问题。谢谢!

以上是关于Objective-C / Cocoa:上传图像、工作内存和存储的主要内容,如果未能解决你的问题,请参考以下文章

在 Objective-C 中使用 AFNetworking 上传图像时出错

使用objective-c从url获取网络摄像头图像

使用 Cocoa 和 Objective-C 理解引用计数

Objective-C/Cocoa:获取关键代码

Objective-C/Cocoa/XCode 新手:如何接收通知?

Objective-C/Cocoa 中 Java 的 Thread.sleep() 等价物是啥?