¿Pasar datos a través de variables globales es una buena práctica en iOS?

No lo haces en iOS. Puede hacerlo en un programa Objective C que se está escribiendo para ejecutarse en iOS. (iOS es algo escrito por Apple; no puede seleccionar las variables que se utilizan en él).

¿Es una buena idea usar variables globales? Podría ser bajo ciertas circunstancias, para ciertas variables, pero generalmente no lo es. La mayoría de las variables no necesitan alcance global, porque no se usan globalmente. Si define la variable a en la función 1, entonces necesita una en la función 2, simplemente pase a a 2. Incluso si la nombra a en 2, es una variable diferente: cámbiela y cuando regrese a 1 no cambia.

Eso es lo bueno de las variables locales: puedo nombrar a mis locales de cualquier forma, y ​​no entrarán en conflicto con sus locales, incluso si tienen el mismo nombre. Me pasas lo que necesito y yo te devuelvo lo que necesitas. Todo lo que pasa, si pasa por valor, es el valor. La variable que tiene ese valor no cambia.

En general, el uso de variables globales no es una buena práctica. Necesitarías una fuerte justificación.

Realmente no. Pero lo hago de todos modos, ya que mis aplicaciones son bastante simples.