The top voted answer to this SA question ( Objective C Static Class Level variables ) outlines my question quite well but to it, I’d like to add one more criteria:
Issue Description
- You want your ClassA to have a ClassB class variable.
- You are using Objective-C as programming language.
-
Objective-C does not support class variables as C++ does.
-
I want to access ClassA’s class variable from subclass ClassASub
or even better
4a. I want ClassA’s method to access the class variable as it is, overridden in ClassASub
Any ideas? Or is this just bending Objective-C one step too far?
Just make a normal getter method for your class variable, and you can override it in the subclass. Just remember to access it through the method.
Then,
So, when you call
[ClassA someMethod], it will operate on theClassAinstance ofclassVar. When you call[ClassASubclass someMethod], it will operate on theClassASubclassinstance.The idea of having variables of any sort attached to an object (class or instance) is a feature that is kind of “stapled on” to Objective C. Any time you want to do anything object-oriented using Objective C, start by working with methods. (Almost) everything else is just syntactic sugar for things you can do with methods.
The concept of private / protected / public is somewhat alien to Objective C, even though access control is supported for member variables. The best you can do for methods is to define them in a separate header (and this applies to class variables and properties, if we implement both using methods).