I'd like to use the @property
syntax to declare a synthesized property that is publicly readonly but has a setter that can be called privately from within the class.
Since it's Objective-C, this basically means that the setFoo:
method would be synthesized, but calling it outside of the class itself would result in a warning (unrecognized selector). To trigger the warning I have to declare the property readonly
; is there any way to force a synthesized setter that is only available within the class?
Best Answer
I think what you're looking for are called class extensions. You would declare the property read-only in the header:
Then redeclare in your class extension in the implementation file:
For more check out Apple's documentation