2010-04-08 52 views
0

不知所措,我有一個工作的Adobe After Effects插件中有一點Obj-c /可可在它(NSArray和自定義對象 - 不是用戶界面的東西)。 SDK指南聲明: -Adob​​e After Effects插件與可可(重寫malloc)

始終使用After Effects內存分配功能。在內存不足的情況下(例如在RAM預覽期間),插件不能與After Effects for OS內存競爭,並且適度地處理內存不足的情況非常重要。未能使用我們的功能可能導致鎖定,崩潰和技術支持電話。不要這樣做。 如果你打包現有的C++代碼,重載新的和刪除使用我們的函數將節省大量的重新實現。在Windows上,從實現新的和刪除的公共基類中派生所有類。

所以我的問題..是與Obj-c中可能的上述語句兼容的東西嗎?

如果絕對必要的話,我可能會調用NSObject的alloc,雖然我不知道NSArray是否使用NSObject的alloc方法。

回答

0

NSZone(這是你需要的)是不可擴展的。 CoreFoundation的分配器是可擴展的,但不是你分配的所有東西都是下面的CF對象。

除非您在Objective-C代碼中分配數百兆內存,否則我不擔心。

+0

我想這個問題是,如果你與After Effects的工作內容,它可以很容易地在幾百兆作爲有大量的視頻,圖像和音頻數據被拋向四周。 – 2010-04-09 00:46:23

+0

當然,問題是這個數據是否被分配爲* Objective-C對象*(這真的是我上面所說的)。 – 2010-04-09 03:26:27

+0

道歉,似乎我不能投票給沒有openID的答案 - 我不想要,但我很感激你(和其他人)花時間幫助我解決這個問題。 所以......當你說'不可擴展'時,我不確定你的意思。第一次看NSZone文檔看起來很有希望.. – hooleyhoop 2010-04-09 15:38:13

0

我認爲這將是非常困難的。

內存分配/ Objective-C對象的釋放是複雜的,與它搞亂將遠遠超過崩潰後通過不使用AE分配函數的影響,在我看來風險更加危險。

這可能是Adobe的一個問題。如果他們在Mac上支持他們的應用程序,那麼他們確實需要爲Cocoa/Objective-C提供支持,因爲它是目前支持的開發方法。

如果我是Adobe,我會添加某種低內存情況的通知,類似於iPhone SDK中的-didReceiveMemoryWarning通知。但是這對你目前的狀況並沒有幫助。

0

,我認爲這是可以做到的,但如果你的UI是不會可可基礎是,我也認爲這將是一個更容易爲你只是沒有用的NSArray。