Re: Some advice requested on debugging a difficult problem. iOS.
Yes, unfortunately, that is the correct behavior. This is described here:
under “Search Pattern for the Basic Getter”, step 4:
"If no simple accessor method or group of collection access methods is found, and if the receiver's class method accessInstanceVariablesDirectly returns YES, search for an instance variable named _<key>, _is<Key>, <key>, or is<Key>, in that order. If found, directly obtain the value of the instance variable and proceed to step 5."
In other words, as long as the underlying instance variable is “_rootURLMap”, using a method named “rootURLMap” will find it.
I strongly recommend overriding class method “accessInstanceVariables” to return NO in *all* data model classes in all production apps. There’s been no valid use case for the legacy behavior of step 4 for 10 years or more, except for compatibility with older code that might have accidentally relied on it.