Home  |  Linux  | Mysql  | PHP  | XML
From:Carsten Lucke Date:Sun Apr 27 13:13:35 2008
Subject:Re: Method signature hackery - lsit of type signatures?
Hey Wez,

that was quick! :-) Thank you! These defines were exactly what I was  
looking for. I thought it had to be somewhere in the ObjC runtime but  
I didn't find it anywhere in the docs. Next time I'll stick to the  
header-files in the first place. ;-)

Thanks again! Keep up the great work.

Regards,
- Carsten


Am 27.04.2008 um 20:59 schrieb Wez Furlong:

> Hi Carsten,
>
> Signatures are not very well documented, at least, not well enoough  
> for a casual google to yield a guide.
> /usr/include/objc/runtime.h has a set of defines like this:
>
> #define _C_ID       '@'
> #define _C_CLASS    '#'
> #define _C_SEL      ':'
> #define _C_CHR      'c'
> #define _C_UCHR     'C'
> /* and more */
>
> so the signature you mentioned:  c@: means:
>
> return type:  c  (the "char" type)
> first param:  @  (the "id" type, which is a pointer to an obj-c  
> object)
> second param: :  (the "selector" type, which identifies the method  
> to be invoked)
>
> the first and second parameters are almost always present; they're  
> the implicit "this" and method name.
>
> Regarding when you need it... if you're working with classes defined  
> by the objective C runtime, we can usually query it to work out the  
> signature automatically.  The delegate example needs you to hint at  
> the signature, because the class is purely defined by PHP based on  
> the method you've declared.  Since PHP is dynamically typed, it's  
> not always possible to infer the correct signature based on the  
> method declaration, and more importantly, there's no way to type  
> hint the return value either.
>
> Hope that helps,
>
> --Wez.
>
>
> On Apr 27, 2008, at 2:39 PM, Carsten Lucke wrote:
>
>> Hi all,
>>
>> the README contains a short explanation of the method signature  
>> hackery. Where can I get an overview of what options I have here  
>> (which abbreviation for which type)? I've seen the @c and also @v  
>> (void?). When is it necessary to add a signature and when is it  
>> not? I couldn't find anything about that...
>>
>> Any small hint is highly appreciated. Thanks a lot in advance!
>>
>> Kind regards,
>> - Carsten
>>
>>
>> > Method signature hackery
>> >
>> > The bridge isn't quite smart enough to automatically figure out  
>> type mapping
>> > for everything, particularly if you are declaring a delegate  
>> object that will
>> > act as a sink for events, so you will need to provide hints in  
>> some cases.
>> >
>> > You can provide the hints using doc-comments like this:
>> >
>> > class MyDelegate extends NSObject {
>> > 	/** @objc:signature c@: */
>> > 	function run_() {
>> > 		echo "*** run!\n";
>> > 	}
>> > }
>> >
>> > the "c@:" part defines the return type and parameters for the  
>> run_ method; it
>> > is a standard objective-C stype signature.
>>
>> -- 
>> PHP Objective-C Bridge Mailing List (http://www.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>
>

Navigate in group php.objc at sever news.php.net
Previous Next




  
© No Copyright
You are free to use Anything
Site Maintained by PHP Developer
Powered By PHP Consultants