I am fairly new to Objective-C. Currently porting my own library from C#/Java to objective C.
I now run into a very strange problem for me.
I have a NSArray with several Note objects. I want to transpose on of these notes:
 //Note.h
 - (Note *) transpose: (int) semitones; 
 //Main
 NSArray *notes = [get it from somewhere];
 Note *transposedNote = [[notes objectAtIndex:0]transpose:1]; //Doesn't compile
 Note *transposedNote = [(Note*)[notes objectAtIndex:0]transpose:1]//Does compile
Is this happening because there is already a transpose method available in the general libraries? 
I thought due to the dynamic nature of objective-C at runtime it would be checked which class objectAtIndex returns and then sends the message to it?