代码之家  ›  专栏  ›  技术社区  ›  hooleyhoop

带cocoa的Adobe After Effects插件(覆盖malloc)

  •  0
  • hooleyhoop  · 技术社区  · 15 年前

    有点麻烦,我有一个正在工作的AdobeAfterEffects插件,里面有一些obj-c/cocoa(nsarray和自定义对象,而不是UI)。《SDK指南》规定:

    总是使用后效内存分配功能。在内存不足的情况下(例如在RAM预览期间),插件不能与操作系统内存的后效竞争,并能优雅地处理内存不足的情况非常重要。不使用我们的功能会导致锁定、崩溃和技术支持呼叫。不要这样做。 如果您包装现有的C++代码,重载NeXT和Delphi使用我们的函数将节省大量的重新实现。在Windows上,从实现new和delete的公共基类派生所有类。

    所以我的问题是……在obj-c中,是否可能与上述语句兼容?

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

    3 回复  |  直到 15 年前
        1
  •  0
  •   Nicholas Riley    15 年前

    nszone(这是您需要的)不可扩展。CoreFoundation的分配器是可扩展的,但并不是您分配的所有内容都是下面的一个CF对象。

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

        2
  •  0
  •   Rob Keniger    15 年前

    我认为这很困难。

    在我看来,Objective-C对象的内存分配/释放是复杂的,与不使用AE分配函数造成后效崩溃的风险相比,处理它更危险。

    这可能是Adobe的一个问题。如果他们在Mac上支持他们的应用程序,那么他们真的需要为cocoa/objective-c提供支持,因为它是当前支持的开发方法。

    如果我是Adobe,我会添加一些关于内存不足的通知,类似于 -didReceiveMemoryWarning iPhone SDK中的通知。但这对你目前的处境没有帮助。

        3
  •  0
  •   Azeem.Butt    15 年前

    我认为这是可以做到的,但是如果你的用户界面不基于可可,我也认为你不使用NSarray会容易得多。