I’m in the process of learning Objective-C, and am trying to get my head wrapped around the idea of using blocks.
In an example I’m seeing, there is a method meant to sort an NSArray named book in alphabetical order by name:
-(void) sort
{
[book sortUsingComparator:
^(id obj1, id obj2) {
return [[obj1 name] compare: [obj2 name]];
} ];
}
How does the method pass the objects to the obj1 and obj2 parameters? Does the sortUsingComparator somehow automatically pass 2 objects to its comparator?
sortUsingComparator:iterates over the array and calls the block with various pairs of objects to determine how to sort them. There’s no magic here — it’s a normal sorting function, but it uses your block instead of>to compare the values.