Ohh, I see now, thank you so much Ken! Best, Tamas
> On 15 Apr 2016, at 11:57, Ken Thomases <k...@codeweavers.com> wrote: > > On Apr 15, 2016, at 4:34 AM, Tamas Nagy <tamas.lov.n...@gmail.com> wrote: >> >> I have an ongoing project where I’m using a CFMessagePort some sort of IPC >> communication. The CFMessagePort has a callback, something like this: >> >> static CFDataRef Callback(CFMessagePortRef port, >> SInt32 messageID, >> CFDataRef data, >> void *info) >> { >> return CFBridgingRetain([NSArchiver >> archivedDataWithRootObject:[(__bridge AppDelegate *)info getParameters]]); >> } >> >> The Callback runs on the main queue, it has been setup with >> CFMessagePortSetDispatchQueue(localPort, dispatch_get_main_queue()); >> >> The interesting part is, and I don’t know why is this happening, >> CFBridgingRetain does not leak memory here - checked out with Instruments, >> also let the app run for a couple of hours, and memory usage does not >> increased (check out in Activity Monitor). Should not that CFBridgingRetain >> leak memory in this example, since I’m retaining a CF object and not >> releasing it by CFRelease? > > No, there's no leak. > > Traditionally, memory management in Core Foundation does not use an > autorelease mechanism. (There is now a CFAutorelease() function, but that > doesn't play into the Core Foundation memory management conventions.) So, if > a function needs to return a new or otherwise untracked object, what are its > options? It can't release it before it returns it. It may not get an > opportunity to release it "some time later". It has to return ownership to > the caller. > > The caller of your callback is expecting to receiving ownership and takes > responsibility for releasing the object it receives. In fact, the > documentation for CFMessagePortCallBack says, "The system releases the > returned CFData object." > <https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFMessagePortRef/#//apple_ref/c/tdef/CFMessagePortCallBack> > > So, your code is doing the right thing. > > Regards, > Ken > _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com