Quick addendum: When you define a property the critical places you will want to use self.property ( to my knowledge ) are : IF the property variable is an object pointer ( not a primative like int or BOOL ) and you are setting the value.
Code:
@property (nonatomic, readwrite) int someValue;
@property (nonatomic, retain) UIView *someView;
// these two are equivalent
someValue = 3;
self.someValue = 3;
// these two are NOT
someView = newView;
self.someView = newView; // use this one
// shouldn't matter when *getting* the value
newView = someView;
newView = self.someView;
If you look into a basic tutorial on writing properties yourself it should become fairly apparent what happens behind the scenes when you use the @property/@synthesize statements, which should make it more obvious which cases you need to use self ( to go through the property accessors ).
=)