2010-02-12 48 views
0

我正在將原本在java中的應用程序移植到cocoa中,但我正在重寫它以使其更好,因爲我更喜歡cocoa a無論如何。Objective-C/Cocoa:上傳圖片,工作內存和存儲

我在應用程序中遇到的一個問題是,當你上傳圖像到它時,我創建了圖像(就像一個NSImage對象),然後我只是讓它們坐在內存中,我上傳得越多他們佔用的內存越多,我最終耗盡內存。

我的問題是這樣的:如果我要讓用戶上傳圖片到這個應用程序的可可,我該如何去存儲它們?我不只是想複製文件路徑,因爲我想要保存包含圖像的內容等。有沒有什麼方法可以上傳圖像並將其複製到僅用於我的應用程序的其他位置?然後根據需要使用新的路徑名稱加載該映像?

只有我希望這一切都得到鞏固。我將通過將一個「主」對象歸檔到一個NSData *來實現保存 - 所以我希望這些圖像能夠保存。

是否有臨時位置可能我可以將圖像寫入磁盤爲我的應用程序,然後當我保存時,他們都將被歸檔到一個單一的文件?另外,我該如何做到這一點?謝謝。

回答

2

如果您只想臨時存儲圖像,可以通過調用NSTemporaryDirectory()將圖像存儲在臨時文件夾中。只有當您需要顯示圖像時,才能加載圖像。

如果要將圖像與文檔一起保存,則應使用文檔的封裝格式進行調查,以便文檔實際上是包含圖像和歸檔數據文件的文件夾。您可以使用NSFileWrapper的各種方法創建包含文檔包的所有文件的文件包裝器,然後您將實施-fileWrapperOfType:error:方法NSDocument以處理保存。

這將允許您保存未改變的圖像,然後在需要時從文檔包中懶惰地加載它們。

+0

非常感謝!我非常感謝你幫助我。這是完美的,並解決了我的問題。謝謝! – 2010-02-13 11:51:55