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

iPhone Objective-C/Plain C内存管理

  •  1
  • toc777  · 技术社区  · 16 年前

    我了解Objective-C内存管理,但我使用的是核心图形功能,如CGRect、CGPoint、CGImageRef等。。它是用C写的。

    谢谢你花时间读这篇文章。

    3 回复  |  直到 16 年前
        1
  •  0
  •   Michael Aaron Safyan    16 年前

    CGRect、CGPoint等都是普通结构,所以您可以通过值传递它们。。。您不需要在堆上分配它们。但是,如果您确实在堆上分配了它们,那么您将需要使用malloc/free来自己管理它们。大多数返回这些对象的CoreGraphics函数只返回对象(例如。 CGRect )而不是指向它们的指针(例如。 CGRect* ),所以你不用担心。

        2
  •  4
  •   Jason Coco superfell    16 年前

    CoreGraphics或CoreFoundation中的任何内容都不会自动释放。通常,如果从中获取CF/CG对象的方法的名称中包含copy或create,那么您就拥有一个CF/CG对象。但是,使用CF/CG时,阅读所调用方法的所有文档非常重要。这些文档将始终为您提供任何内存管理方面的考虑。

    此外,还必须阅读所有不熟悉的数据类型的文档。例如,CGRect是一个简单的结构,因此它几乎总是在自动范围内(即,在堆栈上为您分配)。除非为指向CGRect的指针创建并分配内存(这不是常见情况),否则不涉及内存管理。

    如果您不确定,我建议您阅读您调用的每个函数的所有文档,以及与任何CF C API一起使用的每个数据类型。

        3
  •  0
  •   Palimondo    15 年前

    CGColorSpaceCreateDeviceRGB 说 CGColorSpaceRelease " .

    Memory Management Programming Guide for Core Foundation