Declaring things in the class header file makes them part of the public interface. This includes the outputs and actions defined on the view controller.
Whether something should be published is a design issue. A good leader is: only if necessary. With points and actions of ViewControllers, they do not have to be - and therefore do not have to be public.
What usually happens is that you make some guesses about what the public interface should contain, and then (if you are a tidy developer), you again look at when the implementation has matured and delete something immaterial.
source share