LMPX.COM |
Home | Linux | Mysql | PHP | XML | ||
|
|
|||
From: Wez Furlong Date: Sun Apr 27 12:59:07 2008 Subject: Re: Method signature hackery - lsit of type signatures?
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 |