Cómo declarar variables de instancia y métodos no visibles o utilizables fuera de la instancia de clase?

He revisado varias publicaciones sobre este tema. Tal vez no me encontré con "el indicado" y alguien me indicará en esa dirección. La pregunta es simple y probablemente tenga una respuesta simple.

Si tiene dos ivars, por ejemplo, "public_ivar" y "private_ivar", ¿dónde / cómo debe declararlos para que lo público sea público y lo privado no esté expuesto de ninguna manera a cualquiera que esté mirando el archivo de encabezado?

Same question en el caso de "public_method" y "private_method".

Me gustan los archivos de encabezado limpios (en otros idiomas) que solo exponen los métodos e ivars que quiero que otra persona vea. Debería poder publicar su archivo de encabezado y no correr el peligro de que alguien acceda a algo que no debería. ¿Cómo se hace eso en el objetivo-C.

Por ejemplo, digamos que decido que necesito usar un ivar para realizar un seguimiento de algunos datos, un contador o algo así, entre varios métodos de clase que todos necesitan acceso a esta información. Si ese ivar se declara convencionalmente en el encabezado debajo de @interface, su existencia se anuncia públicamente y cualquiera puede crear una instancia de la clase. El escenario ideal sería que este ivar no sería visible en absoluto fuera de la implementación de la clase.

Respuestas a la pregunta(3)

Su respuesta a la pregunta