Parece que lo has hecho demasiado complejo. Obviamente, la idea no es realmente "hay una variable nombrada totalSave
"Dado que el usuario no le importa dónde lo almacene, y desde el resto de su publicación, en realidad no le importa cómo lo almacene.
Dicho esto, para que esto sea un poco más concreto, pensemos en un estado de "puntaje total" al que podrían agregar numerosas partes del programa. Hay un par de enfoques que puede adoptar. En cualquier caso, es probable que tenga algún objeto en algún lugar que realice un seguimiento del puntaje. Lo llamaremos el Game
objeto, pero podría ser un Level
o lo que sea.
Entonces hay tres grandes escuelas de pensamiento: puedes pasar esto Game
oponerse a todos, puedes tener un Game
singleton, o puede usar notificaciones. Cada uno de estos enfoques tiene ventajas, y cualquiera que elija probablemente esté bien para un programa simple (personalmente, para un programa muy simple, usaría un singleton).
En el primer esquema, en algún momento del programa crea un Game
objeto que tiene algunos addToScore:
método. Asigna este objeto como una propiedad en cualquier otro objeto que necesite actualizar la puntuación. Cada una de esas llamadas [self.game addToScore:value]
. Este enfoque hace que las pruebas unitarias sean un poco más simples, pero puede ser un poco tediosa de implementar.
En el segundo esquema, tienes algunos singleton compartido +[Game sharedGame]
. Cuando desee actualizar el puntaje, llame [[Game sharedGame] addToScore:value]
. Este es generalmente el Easet para implementar.
En el tercer esquema, tienes algún objeto (Game
) que usa NSNotificationCenter
para observar alguna notificación. Cuando desee actualizar el puntaje, solo publique una notificación que incluye la cantidad a agregar en su diccionario de usuario. Esto es excelente para mantener las cosas extremadamente desacopladas, pero nuevamente puede ser un poco tediosa en el caso más habitual.
Pero como señala @Chuck, probablemente esté pensando demasiado en esto, y es posible que desee regresar y trabajar a través de algunos de los tutoriales para tener una mejor idea de cómo funcionan estas cosas. El tipo de situación que estás describiendo no es muy complicada.