Rick,

thanks for answering, because what I found on the Internet seems contradictory. 
Some say that if the C function is placed inside the implementation block, then 
it can access attributes as if it were a true Obj-C method; some say otherwise. 
So it’s a bit difficult to find a definitive answer thereon.

> Having said that, most callback APIs allow you to pass a context parameter 
> that gets passed back to your C callback. Often times, this context parameter 
> is a void* you pass in along with a pointer to your callback function. You 
> can pass "self" in this parameter when you register the callback, then cast 
> it inside your callback back to MyClass* (or whatever your class is).

Yes, right; it’s a SQLite callback, the first parameter is a void *. I wanted 
to pass a pointer to a structure containing both a unique query id (out of 
uuid) and a pointer to self, but got told off by ARC because it apparently 
forbids to embed pointers to Obj-C objects in C-structs. So I just bridge-cast 
it to void *.

Assuming the pointer to the struct is named ‘info’ and the field containing a 
reference to ‘self’ is called ‘this’, [info->this someMethod] as well as 
info->this->someAttribute are legal, aren’t they?

Thanks a lot!
Vincent


_______________________________________________

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

Reply via email to