The setNumerator method is used to tell a Fraction object what value it should hold in the variable named numerator. As in "Here, Mr. Fraction, please use the value n for your numerator." In the implementation of this method, the code has to deal with two different concepts: the parameter variable n containing the new value, and the instance variable numerator which must be changed to the value in n; hence the need for two different names. The line
numerator = n;
literally means "copy the number in n into the variable numerator."
Remember, there are two halves to the transaction. Say I'm a Fraction object, and you want me to set my numerator to 4. You say "Set your numerator to 4, or setNumerator(4)", which is fine, because you're human, and you get to choose whatever number you want.
But as a lowly Objective-C object, all my code was written some time in the past; it was written before the value 4 was even a twinkle in your eye. So the code for setNumerator() has to be generic; it has to be written to say "set numerator to whatever value the human wants -- call it n". Remember, my actual variable numerator is hidden from you; all you can do is call my method, and it's up to me to set the variable.
That's why the method must be written to use an abstract name -- n -- for the value, since when the method is written, the value is unknown.