【发布时间】:2014-06-29 17:01:01
【问题描述】:
我不确定是使用 CF_RETURNS_RETAINED 还是 CF_RETURNS_NOT_RETAINED 来返回 CFDataProviderRef 的自定义函数。
根据the documentation at the location where the macros are defined,两者都应该只在特殊情况下使用,正确的修复应该是修复我的命名约定。 但是 swift/objective-c 文档 suggests using 他们注释任何返回 CoreFoundation 指针的函数,而没有真正解释何时使用哪个 --- 如果我不注释它们,我需要每次在 swift 中手动指定行为代码。
我可以找到的更多文档解释了如何使用 ARC 值 +1 和另一个 0,但恐怕这对我的理解没有多大帮助。
我的问题:
- 我应该使用它们,还是按照
Base.h的建议改进我的命名? - 那里使用的确切命名约定是什么?
- 我是否正确假设如果我希望返回的对象使用的内存在调用者超出范围后立即释放,而如果我不希望发生这种情况,我应该使用另一个(因为我在其他地方使用了指向它的指针,或者我自己清理了)?
- 我的函数所做的只是返回一个
CFDataProviderRef,这是我从对CGDataProviderCreateSequential的调用中得到的。我想这意味着我希望行为为CGDataProviderCreateSequential(对吗?)。如何确定该函数是使用 CF_RETURNS_RETAINED 还是 CF_RETURNS_NOT_RETAINED(CGDataProvider.h文件中没有)?
【问题讨论】:
标签: objective-c automatic-ref-counting swift core-foundation