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
|