Re: [Pyobjc-dev] Catergory Question ...
Brought to you by:
ronaldoussoren
From: Mic P. <mic...@gm...> - 2009-05-10 16:06:06
|
Thankyou all so much. Between Bob and Ronald I now have this working. -Mic 2009/5/10 Ronald Oussoren <ron...@ma...>: > > On 8 May, 2009, at 13:44, Mic Pringle wrote: > >> Okay, fantastic ! >> >> Would it be possible for you to give me an example of your last point >> (re: manual annotations for some method you may use in a category) as >> this is the only part I don't have any experience with ? >> >> I am looking to add two methods to NSString, one which returns a >> string and another which returns an array. >> >> This would be greatly appreciated. > > Both strings and arrays are objects and hence no manual annotation is > needed, something like this should work: > > class MyStringCategory (objc.Category(NSString)): > def myStringValue(self): > return u"hello" > > def myArrayValue(self): > return [1,2] > > > You only need manual annotations when an argument or return value is a basic > C type (such as a C "int" or "NSPoint"). Adding annotations is described in > the pyobjc documentation and is definitely advanced behaviour because it > uses some very lowlevel machinery. > > > Ronald >> >> Thanks >> >> -Mic >> >> 2009/5/8 Ronald Oussoren <ron...@ma...>: >>> >>> On Friday, May 08, 2009, at 10:59AM, "Mic Pringle" <mic...@gm...> >>> wrote: >>>> >>>> Hi, >>>> >>>> Just a quick question regarding categories. >>>> >>>> I have a hybrid Obj-c/PyObj-c application and I'd like to know if I >>>> add a category in a PyObj-c module, will it be availble to use in the >>>> Obj-c side of the project ?? >>>> >>>> If so, does it just work or are there any special instructions I need >>>> to follow to get it working ? >>> >>> Methods you add using an Python category are available in ObjC as well >>> (the same is true for methods you add in a subclass, those can be called >>> from ObjC as well). >>> >>> Two possible sources for confusion/problems: >>> >>> * Unless the methods you add are already known to the compiler you'll >>> have to write a header file that the ObjC compiler >>> can use. You'll get compiler warnings otherwise. >>> >>> * Methods that you add in python by default have arguments and a return >>> value of type 'id'. This can be overridden by: >>> >>> - information extracted from the superclass (if you override a method >>> PyObjC knows the new method should have the >>> same signature as the one in a superclass). >>> - the method is defined in an informal_protocol that's known to PyObjC, >>> the method signature is then extracted from >>> that protocol >>> - manual annotations (objc.accessor, objc.selector, ....) >>> >>> Ronald >>>> >>>> Thanks >>>> >>>> -Mic >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your >>>> production scanning environment may not be a perfect world - but thanks >>>> to >>>> Kodak, there's a perfect scanner to get the job done! With the NEW KODAK >>>> i700 >>>> Series Scanner you'll get full speed at 300 dpi even with all image >>>> processing features enabled. http://p.sf.net/sfu/kodak-com >>>> _______________________________________________ >>>> Pyobjc-dev mailing list >>>> Pyo...@li... >>>> https://lists.sourceforge.net/lists/listinfo/pyobjc-dev >>>> >>>> >>> > > |