I just discovered that using KVO to get this returned value that is stored as a copied property within the class that is C & Obj-C is a really bad idea.
When I access the data through KVO from the VC that created the call to instantiate the lib that returns the C to Obj-C value, it's no problem, but moving the observing into a separate class results in a sigabrt when the observed value changes. So, I'm assuming that KVO is out of the picture if I am to actually use the value that I am returning from C to Objective-C. I'm browsing the Dubrovnik classes now to see the it handles returning the data now and am thinking of using another Obj-C object to register itself to have the data I care about sent to it. Yeah, it's getting complex, that's for sure. On Mar 4, 2016, at 7:06 PM, John McCall wrote: > >> On Mar 4, 2016, at 4:03 PM, Greg Parker <gpar...@apple.com> wrote: >> >> >>> On Mar 4, 2016, at 2:24 PM, Jonathan Mitchell <li...@mugginsoft.com> wrote: >>> >>> Hi Alex >>> >>> Not sure if this will help at all as I am not 100% sure what you are doing. >>> In my case, using Mono, I needed to track events being raised in the Mono C >>> runtime back into Obj-C space. >>> You need some method of defining a call back function in the target C Api - >>> without that thinks would look rather bleak. >>> >>> Basically the C Mono runtime is configured to a call static C function in >>> an Obj C .m file in response to a C# managed event firing. >>> The static then calls a static method on an Obj-C class. >>> This Obj-C static uses collections to track registered events and invokes >>> performSelector: on a registered Obj-C target. >>> See here: >>> https://github.com/ThesaurusSoftware/Dubrovnik/blob/master/Framework/XCode/Representations/DBManagedEvent.m >>> >>> One of the arguments based in as part of the event callback is a pointer >>> that is used as a a key to retrieve the target NSObject. >>> This is complicated by the fact that the incoming pointer represents a >>> moveable memory location so there is some extra indirection too. >>> https://github.com/ThesaurusSoftware/Dubrovnik/blob/master/Framework/XCode/Representations/DBPrimaryInstanceCache.m >>> >>> This can get a bit complex but its all doable. >> >> Block objects can help. clang supports block objects in plain C code >> (-fblocks, I think). > > They're just enabled by default on our platform in all language modes. > > John. > >> Your Objective-C code can create a block object that performs the callback >> and pass it to the C code to store and call. The block object would capture >> the target NSObject so you don't need the dictionary of callback targets. >> >> >> -- >> Greg Parker gpar...@apple.com Runtime Wrangler >> >> >> >> _______________________________________________ >> >> 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/rjmccall%40apple.com >> >> This email sent to rjmcc...@apple.com > > > _______________________________________________ > > 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/zav%40mac.com > > This email sent to z...@mac.com _______________________________________________ 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