externo es una manera de indicar de forma explícita, para facilitar la lectura y la ejecución en tiempo de compilación, que son simplemente declarando esta variable aquí, y realmente esperamos que sea definido en otro lugar. Si también tratara de definir la variable externa, el compilador le dirá el error de sus formas. Esto es útil para las variables globales para evitar la colisión de nombres y las definiciones múltiples, las cuales le darán errores de enlazador. La palabra clave extern en sí misma, sin embargo, no hace que la variable sea global.
Lo que hace que la variable sea global es la posición de su declaración en el archivo. Si tuviera que declarar una variable fuera de la @interface en el archivo de cabecera de una clase, habría declarado una variable compartida y visible para todas las instancias de su clase, así como para cualquier persona que #importe el encabezado. Si fueras (y aparentemente lo hicieras) declarar una variable fuera de @implementation en tu clase '.m file, también habrías declarado una variable que es compartida entre todas las instancias de tu clase, pero no es visible para nadie que #importa tu encabezado.
Por lo tanto, utilice la posición de las declaraciones de variables para determinar el alcance. Solo definirá estas variables globales en un solo lugar. Para todos los demás lugares donde declararlos, prefija la declaración con extern para que el código sea legible, sus intenciones claras, y para asegurarse de que no intente y defina de nuevo.
Versión corta: extern significa que existe en algún lugar, pero no aquí. No tenerlo dentro de @interface o @implementation lo convierte en un global. – ughoavgfhw
Gran explicación, gracias. –
¡Gracias por su ayuda! – Jackson