Xcode CFRelease和CFSafeRelease有什么区别?

Xcode CFRelease和CFSafeRelease有什么区别?,xcode,macos,Xcode,Macos,CFRelease和CFSafeRelease有什么区别? 不幸的是,我在提供的文档中找不到任何内容 谢谢 没有标准的东西叫做CFSafeRelease。您的本地代码中可能有一个宏或函数,它定义了如下内容: #define CFSafeRelease(x) if (x) { CFRelease(x); x = NULL; } 或者类似的。这是一个非常常见的宏,尽管它通常被命名为MYSafeRelease或其他名称,以防止它看起来像是内置的 当然,有时您会发现它的定义如下: 这当然不是一个安全的

CFRelease和CFSafeRelease有什么区别? 不幸的是,我在提供的文档中找不到任何内容


谢谢

没有标准的东西叫做CFSafeRelease。您的本地代码中可能有一个宏或函数,它定义了如下内容:

#define CFSafeRelease(x) if (x) { CFRelease(x); x = NULL; }
或者类似的。这是一个非常常见的宏,尽管它通常被命名为MYSafeRelease或其他名称,以防止它看起来像是内置的

当然,有时您会发现它的定义如下:

这当然不是一个安全的版本,因为它会留下一个悬空的指针……

什么是CFSafeRelease?这不是苹果的东西。
#define CFSafeRelease( cfobj ) if ( cfobj != NULL ) CFRelease( cfobj );