And to add to the discussion thread the api for NSArray says:
Conformance to the NSKeyValueCodingAdditions interface. NSArray's
implementation is more complex than the default:
* If keyPath indicates an operation takes an argument (such as
computing an average), valueForKeyPath performs the operation and
returns the result. key indicates an aggregate operation if its first
character is "@". For example, if key is "@avg.salary", valueForKey
invokes compute on the "avg" operator specifying the array and
"salary" as arguments. This has the effect of computing and returning
the average salary of the array's elements.
* Otherwise, valueForKeyPath behaves similarly to valueForKey
and produces a new NSArray whose elements correspond to the results
of invoking valueForKeyPath on each element of this array.