gpt4 book ai didi

c - 作为值提供给 CFReadStreamSetProperty() 的对象的生命周期

转载 作者:行者123 更新时间:2023-11-30 17:31:14 24 4
gpt4 key购买 nike

我需要向 CFReadStreamSetProperty() 提供 CFNumberRef 类型的值。我正在使用由 CFReadStreamCreateForHTTPRequest() 返回的 CFReadStream。我应该通过我的 CFNumberRef 调用 CFRelease(),还是必须保留 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_idhttpReadStream 之前释放是否重要?

最佳答案

好的,根据:https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/Concepts/Ownership.html ,看来我应该调用 CFRelease(),因为正如它所说:

基本规则的推论是,当您将一个对象传递给另一个对象(作为函数参数)时,您应该期望接收者如果需要维护它,将获得所传递对象的所有权。

因此,如果 CFReadStreamSetProperty() 将来想使用我的对象,则应该调用 CFRetain()

关于c - 作为值提供给 CFReadStreamSetProperty() 的对象的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24733606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com