Re: [Pyobjc-dev] Catergory Question ...
Brought to you by:
ronaldoussoren
From: Bob V. <pyo...@bo...> - 2009-05-08 18:49:41
|
I believe you must define stringFromTextile: as a class method in Python because that's how you're defining its interface in Objective-C. Don't know what the @objc.signature('#:#:) aims to accomplish, but I think this should work instead: @classmethod def stringFromTextile_(self, aString): Bob On May 8, 2009, at 10:35 AM, Mic Pringle wrote: > Hi Ronald, > > I'm still having issues with this. My category is defined in the file > NSStringTextile.py as follows ... > > from Foundation import * > import objc > import textile > > class NSString(objc.Category(NSString)): > > @objc.signature('#:#') > def stringFromTextile_(self, aString): > try: > data = textile.textile(aString) > except: > data = '' > return data > > And my header file, NSStringTextile.h, as follows ... > > #import <Cocoa/Cocoa.h> > > @interface NSString (Textile) > > + (NSString *)stringFromTextile:(NSString *)aString; > > @end > > However, when ever I try to use the category I get the following > message box popup ... > > [NSString stringFromTextile:]: unrecognized selector sent to class > 0xa0839f20 > > I have also added my python file to main.py > > Any ideas on where I'm going wrong ? > > Cheers > > -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 >>> >>> >> > > ------------------------------------------------------------------------------ > 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 |