objective c - Property with redefined accessor still accessible -
i wondering usefulness of redefining getter of property. documentation states can redefine getter of property using getter:
@property (getter=isfinished) bool finished; from understand, callers should use:
myobj *obj = ...; obj.isfinished; but nothing prevents do:
myobj *obj = ...; obj.finished; since property can still freely accessed, what's point of redefining getter?
wouldn't more concise , readable do:
@property bool isfinished;
by @property (getter=isfinished) bool finished; declare explicit getter, implicit setter, and implicit ivar. (in former versions of objc, have needed `@synthesize in addition). however, there no need getter/setter use automatic ivar, not ivar @ all. thus, can have private ivar, or set number of ivars, or other 'magic'.
the dot syntax syntactic sugar avoid [].
edit till here, answered question "what's point of redefining getter?".
to answer name/privacy part: if want bool, first alternative fine. if want protected/private ivar, declare ivar in way, , write own getter/setter.
to name property isfinished considered not (unless read property), since original setting (not dot semantic) setisfinished:val (instead of setfinished:val), considered not easy readable. however, have getter isfinished allows if ([obj isfinished]) ... or if (obj.isfinished) ... considered quite readable.
thus, naming , privacy independent concepts.
Comments
Post a Comment