This is because obj c creates the ivar for you along with a setter and getter whereas you used to have to synthesize the ivar yourself. If you manually create the setter AND getter, however, it assumes that you do not want the ivar and so you then have to synthesize it yourself.