Tuples in Objective-C

What do you mean Tuples? Objective-c has no tuples! Instead you should be using either an NSArray or an NSDictionary!

Sure, you can do that, but every now and then it’s nice to come up with a crazy alternative.

What alternative? well… using blocks.

- (void (^)(NSInteger *, NSString *__autoreleasing *))somethingThatReturnsATuple {
return ^(NSInteger *n, NSString **s){
*n = 8;
*s = @"welcome to tuple land";
};
}

This is an objective-c method that returns a block, or should I say “tuple”. It has all the necessary ingredients. This “tuple” is storing an NSInteger and an NSString. You can get values out of this tuple like so:

void(^tuple)(NSInteger *, NSString **) = [self somethingThatReturnsATuple];
NSInteger num;
NSString *str;
tuple(&num, &str);
NSLog(@"%ld", (long)num); // prints 8
NSLog(@"%@", str); // prints "welcome to tuple land"
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.