If you just need, for example, some user delegates to work with another class, there is no need to publish the interface in the header.
It simply adds too much noise and makes available interfaces that may not be intended for general use or useful outside the context of the class.
The same applies to class methods and properties - if you want to use declared properties for your instance variables, but do not want them to be publicly available, you do not have to declare them in the header. Class extensions allow you to do this, see, for example, "How to make private property?" .
source share