使用Cocoa的Adobe After Effects插件(覆盖malloc)

时间:2010-04-08 09:04:58

标签: cocoa macos malloc

搞砸了一下,我有一个Adobe After Effects插件,里面有一些Obj-c / Cocoa(NSArray和自定义对象 - 不是ui的东西)。 SDK指南指出: -

  

始终使用After Effects内存分配功能。在内存不足的情况下(例如在RAM预览期间),插件不能与After Effects for OS内存竞争,并优雅地处理内存不足的情况非常重要。未能使用我们的功能可能会导致锁定,崩溃和技术支持呼叫。不要那样做。   如果你要包装现有的C ++代码,重载new和delete来使用我们的函数将节省大量的重新实现。在Windows上,从实现new和delete的公共基类派生所有类。

所以我的问题..是否与Obj-c中的上述陈述兼容?

如果绝对必要,我可能会在NSObject上调用alloc,尽管我不知道像NSArray这样的东西是否会使用NSObject的alloc方法。

3 个答案:

答案 0 :(得分:0)

NSZone(这是您需要的)不可扩展。 CoreFoundation的分配器是可扩展的,但不是你分配的所有东西都是下面的CF对象。

除非你在Objective-C代码中分配数百兆内存,否则我不会担心。

答案 1 :(得分:0)

我认为这将非常困难。

在我看来,Objective-C对象的内存分配/释放是复杂的,如果不使用AE分配功能而导致After Effects崩溃的风险会更加危险。

这可能是Adobe的一个问题。如果他们在Mac上支持他们的应用程序,那么他们确实需要为Cocoa / Objective-C提供支持,因为它是目前支持的开发方法。

如果我是Adobe,我会添加一些低内存情况的通知,类似于iPhone SDK中的-didReceiveMemoryWarning通知。但是在你目前的情况下,这对你没有帮助。

答案 2 :(得分:0)

我认为可以这样做,但如果您的UI不是基于Cocoa的,我也认为您不会使用NSArray会更容易。