Re: [Pyobjc-dev] void * fun
Brought to you by:
ronaldoussoren
From: Jonathan W. <jwi...@to...> - 2006-01-14 01:45:56
|
On Jan 8, 2006, at 5:02 AM, Ronald Oussoren wrote: > > On 5-jan-2006, at 7:03, Jonathan Wight wrote: > >> I need to call an Objc method with a void * parameter: >> >> - (BOOL) addPluginsMenuTitle:(NSString*)menuTitle >> withSuperMenuTitle:(NSString*)superMenuTitle >> target:(id)target >> action:(SEL)selector >> keyEquivalent:(NSString*)keyEquivalent >> keyEquivalentModifierMask:(unsigned int)mask >> userData:(void*)userData; >> >> I need to pass in data to the userData parameter, which will get >> passed to callback. Right now I dont care what the data is - >> strings or ints will work for me. But pyobjc refuses to let me >> pass in anything that isn't a "pointer". Is there a solution for >> this yet? > > In the Cocoa wrappers we replace the method signature by one that > passes an 'int' value for userData. You can then pass an integer to > the method and use that as a key to look up the actual data in a > dict. We do this because we cannot know how long the userdata > should stay alive, which means we cannnot perform the proper > reference counting for it and therefore cannot support real objects > without risking severe memory corruption. I actually tried an int and couldn't get it working. Fortunately the application developer was able to work with me and add another api that takes id. Jon. |