Core Foundation内存管理

来源:互联网 发布:ftp源码下载 编辑:程序博客网 时间:2024/05/20 07:14

Core Foundation内存管理


我的理解CoreFoundation是一堆C语言API的集合。内存管理和Objective C感觉挺像的。简单介绍如下:
CoreFoundation也有引用计数的概念,或者叫retain计数。这个计数代表有多少个拥有者持有一个对象。当一个对象的引用计数是0的话,这个对象就被释放了。CoreFoundation遵循下面的规律:
1,如果你创建了一个对象,那么你就持有它。
2,如果从某个地方得到一个对象,那么并没有持有它。为了防止它被释放,需要调用CFRetain方法。
3,如果你持有了一个对象,使用完后要CFRelease这个对象。

CoreFoundation有许多取得一个ref的方法。由于CoreFoundation使用的是持有的机制。所以我们必须要知道是否自己持有一个对象,这样才能管理内存。CoreFoundation制定了命名规则帮助我们判断是否持有一个对象。

1,Create准则:
如果函数名带有Create/Copy的话,说明你持有该对象。例如以下函数:

下面情况相对复杂一些

CFBagCreateMutableCopy函数既有Create又有Copy。实际上它是Create函数。后面Copy的意思是要Copy bag这个参数。

2,Get准则:
如果函数名带有Get的话,说明你并没有持有该对象。

Link: http://www.wangdg.com/?p=447