我需要向CFNumberRef
提供CFReadStreamSetProperty()
类型的值。我正在使用CFReadStream
返回的CFReadStreamCreateForHTTPRequest()
。我应该在CFRelease()
上致电CFNumberRef
,还是必须保留CFNumberRef
,直到CFReadStream
存在?
我的代码如下:
void func(..., const long long id)
{
//...
CFReadStreamRef httpReadStream = CFReadStreamCreateForHTTPRequest(...);
//...
CFNumberRef cf_id = CFNumberCreate(kCFAllocatorDefault, kCFNumberLongLongType,
&id);
CFReadStreamSetProperty(httpReadStream, CFSTR("myId"), cf_id);
}
我应该致电CFRelease(cf_id)
并在cf_id
之前发布httpReadStream
是否重要?
答案 0 :(得分:0)
好的,根据:https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/Concepts/Ownership.html,似乎我应该致电CFRelease()
,因为它说:
基本规则的必然结果是当你将一个对象传递给另一个对象(作为一个函数参数)时,你应该期望接收者在需要维护传递对象时将获得它的所有权。 / em>的
因此CFReadStreamSetProperty()
如果想在将来使用我的对象,则应调用CFRetain()
。