Dec 8, 2010
Posted in Flex | 0 comments
Something I’ve tried and liked recently, using MXML is binding the view to the model. makes life very clean and easy. However, there’s the issue of calling a request, listening for a response, getting the data and then pointing it at the view for the view to handle, or even more cumbersome, listening to it via the Mediator and then populating views that way.
I’ve found a way I like better. It may not be new, but it’s clean, simple, and easy to understand.
For example, I want to do a search for the latest images from a webservice. Well my ImagesProxy.instance.search(‘latest images’), can call a search. Great! But I still got to hook up to it. So..
[code]
ImagesProxy.instance.search(type:String, limit:int=20):ArrayCollection
[/code]
The ArrayCollection is the dataProvider for your view, that gets populated with the results.
The great thing about this, is you recieve the reference to the data. In MXML, the views or specifically components can bind to the data models meaning..
you can write code like this :
[code]
<s:DataGroup dataProvider="{ImageProxy.instance.search('latest images', 20)}" itemRenderer="ImageItemRenderer">
<s:layout>
<s:HorizontalLayout horizontalAlign="left" gap="10" columnWidth="155"/>
</s:layout>
</s:DataGroup>
[code]
Genius.. one line of code
Aug 10, 2010
Posted in iPhone / iPad | 0 comments
I’ve been curious as to being able to put remote cameras on things, such as my friends remote control helicopter recently. I wanted to create a feed from the helicopter to my iPad. I aslo wanted to control the helicopter.
Well controlling the helicopter is another thing, but for now let’s stick with getting a feed from a iPhone, or specifically, multiple iPhones.
Amazingly ‘there’s an app for that’. It’s called Duplicam, and it available from the app store for £1.19.
It’s simple to use, and simple in concept, it’s hard to go wrong with it, so I’m impressed already fro the usability point of view. It’s nicely designed which always makes things more enjoyable.
Essentially, you can pair one iPad with any number of iPhones and grab a live feed from them. When you want, take a picture, from all or one, and save it to you iPhone, iPad or both.
Nice! I was so impressed i felt obligated to download the WordPress iPad app and blog about it


Jun 10, 2010
Posted in Mac OSX, iPhone / iPad | 0 comments
Display a simple message to the user thus:
UIAlertView *alert =
[[UIAlertView alloc] initWithTitle: @"Title goes here"
message: @"Message goes here"
delegate: self
cancelButtonTitle: @"OK"
otherButtonTitles: nil];
[alert show];
[alert release];
If you want to catch the button press :
- (void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) id {
NSLog(@"button clicked: %d", id);
}
Jun 9, 2010
Posted in Mac OSX, iPhone / iPad | 0 comments
Often times I just want to delay a single call by a number of seconds. I don’t really want to loop it.
Previous I had used NSTimer to create the call, then I had to remove the time when the call was made. This was less than ideal, and more code that I would have liked. However, I’ve since discover the excellent ‘PerformSelector’:
To use:
[self performSelector:@selector(method) withObject:nil afterDelay:5.0];
To cancel:
[NSRunLoop cancelPreviousPerformRequestsWithTarget:self];
For more information, check out apples docs here: apple docs
May 27, 2010
Posted in Mac OSX, iPhone / iPad | 1 comment
This is a quick reference for NSString StringWithFormat format specifiers or tokens, as I’m often trying to remember them myself.
| Specifier |
Description |
%@ |
Objective-C object, printed as the string returned by descriptionWithLocale: if available, ordescription otherwise. Also works with CFTypeRef objects, returning the result of theCFCopyDescription function. |
%% |
'%' character |
%d, %D,%i |
Signed 32-bit integer (int) |
%u, %U |
Unsigned 32-bit integer (unsigned int) |
%hi |
Signed 16-bit integer (short) |
%hu |
Unsigned 16-bit integer (unsigned short) |
%qi |
Signed 64-bit integer (long long) |
%qu |
Unsigned 64-bit integer (unsigned long long) |
%x |
Unsigned 32-bit integer (unsigned int), printed in hexadecimal using the digits 0–9 and lowercase a–f |
%X |
Unsigned 32-bit integer (unsigned int), printed in hexadecimal using the digits 0–9 and uppercase A–F |
%qx |
Unsigned 64-bit integer (unsigned long long), printed in hexadecimal using the digits 0–9 and lowercase a–f |
%qX |
Unsigned 64-bit integer (unsigned long long), printed in hexadecimal using the digits 0–9 and uppercase A–F |
%o, %O |
Unsigned 32-bit integer (unsigned int), printed in octal |
%f |
64-bit floating-point number (double) |
%e |
64-bit floating-point number (double), printed in scientific notation using a lowercase e to introduce the exponent |
%E |
64-bit floating-point number (double), printed in scientific notation using an uppercase E to introduce the exponent |
%g |
64-bit floating-point number (double), printed in the style of %e if the exponent is less than –4 or greater than or equal to the precision, in the style of %f otherwise |
%G |
64-bit floating-point number (double), printed in the style of %E if the exponent is less than –4 or greater than or equal to the precision, in the style of %f otherwise |
%c |
8-bit unsigned character (unsigned char), printed by NSLog() as an ASCII character, or, if not an ASCII character, in the octal format \\ddd or the Unicode hexadecimal format \\udddd, where d is a digit |
%C |
16-bit Unicode character (unichar), printed by NSLog() as an ASCII character, or, if not an ASCII character, in the octal format \\ddd or the Unicode hexadecimal format \\udddd, where d is a digit |
%s |
Null-terminated array of 8-bit unsigned characters. %s interprets its input in the system encoding rather than, for example, UTF-8. |
%S |
Null-terminated array of 16-bit Unicode characters |
%p |
Void pointer (void *), printed in hexadecimal with the digits 0–9 and lowercase a–f, with a leading 0x |
%L |
Length modifier specifying that a following a, A, e, E, f, F, g, or G conversion specifier applies to a long double argument |
%a |
64-bit floating-point number (double), printed in scientific notation with a leading 0x and one hexadecimal digit before the decimal point using a lowercase p to introduce the exponent |
%A |
64-bit floating-point number (double), printed in scientific notation with a leading 0X and one hexadecimal digit before the decimal point using a uppercase P to introduce the exponent |
%F |
64-bit floating-point number (double), printed in decimal notation |
%z |
Length modifier specifying that a following d, i, o, u, x, or X conversion specifier applies to a size_t or the corresponding signed integer type argument |
%t |
Length modifier specifying that a following d, i, o, u, x, or X conversion specifier applies to a ptrdiff_tor the corresponding unsigned integer type argument |
%j |
Length modifier specifying that a following d, i, o, u, x, or X conversion specifier applies to a intmax_tor uintmax_t argument |