Using @synthesize tells the compiler to make default accessors, which you obviously don't want in this case. @dynamic indicates to the compiler that you will write them. There used to be a good example in Apple's documentation, but it somehow got destroyed in their 4.0 SDK update... Hope that helps!