Quel "^" sta a significare un block object, ovvero l'equivalente delle classi anonime del mondo Java. Un esempio di utilizzo è:
int (^aMethodWithInt)(int); //Definizione
aMethodWithInt = ^(int anInt) {
return anInt+1;
}; //Ci va il ; alla fine
Invece quel + indica una categoria. Una categoria permette di aggiungere metodi ad una classe di cui non si possiede il codice sorgente. Nello specifico l'interfaccia che hai scritto tu presumo che aggiunga delle funzionalità matematiche alla classe NSArray