You can get "partial synthesis" if the property is declared nonatomic:
@property (nonatomic) CGFloat insetMargin;
The default (for unknown reasons) is atomic. In order to implement that atomicity, both of the accessors have to use the same locking mechanism. That mechanism isn't exposed when the methods are synthesized, though. Therefore you have to either implement both accessors and create your own lock or let the compiler do both and use its lock.
If the property is not atomic, however, you can explicitly implement any combination of the three elements: ivar, setter, or getter, and the compiler will take care of the rest. If you want to change the name of the ivar from the default (currently the property name with a prepended underscore), you will also need an explicit @synthesize
.