2014-07-14 6 views
0

CFNumberRef ~ CFReadStreamSetProperty()의 값을 입력해야합니다. 나는 과 함께 작업 중이며 CFReadStreamCreateForHTTPRequest()에 의해 반환됩니다. CFNumberRefCFRelease()라고 전화해야합니까? 아니면 CFReadStream까지 CFNumberRef을 보존해야합니까?CFReadStreamSetProperty()에 값으로 제공되는 객체의 수명

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 이전에 출시 된 경우이 문제가 않습니다

내 코드처럼 보이는?

답변

0

확인에 따라 : https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/Concepts/Ownership.html, 말한대로 때문에 나는, CFRelease()를 호출해야 것 같다 :

기본 규칙의 추론은 당신이 함수의 매개 변수로 (다른 개체에 개체를 통과 할 때), 수신기를 유지해야하는 경우 수신자가 전달 된 객체의 소유권을 가져야합니다.

그래서 CFReadStreamSetProperty()은 나중에 내 개체를 사용하려는 경우 CFRetain()으로 전화해야합니다.