What exactly is the reasoning behind using [NSDictionary setValue:(id) forKeyPath:(NSString*)` instead of plain `setValue:(id)forKey:(NSString*)`