self.variable will always invoke the getter function of the member "variable", whereas calling it simply variable will just use the variable itself. since most of the time people use @synthesize, they wont explicitly see the getter and the setter functions, so in this case i would say use the variable name without prefixing with self. when you will need to do more than just setting a variable value in the setter, and you will give up the synthesized function and write your own, you will figure out what i mean.