Parece que você tornou isso excessivamente complexo. Obviamente, a ideia não é realmente "existe uma variável nomeada totalSave
"Como o usuário pode se importar menos com o que você o armazena e, a partir do restante da sua postagem, você realmente não se importa com a forma como a armazena.
Dito isto, para tornar isso um pouco mais concreto, vamos pensar em um estado de "pontuação total" ao qual inúmeras partes do programa podem adicionar. Existem algumas abordagens que você pode adotar. De qualquer forma, você provavelmente tem algum objeto em algum lugar que acompanha a pontuação. Vamos chamá -lo de Game
objeto, mas pode ser um Level
como queiras.
Portanto, existem três grandes escolas de pensamento: você pode passar isso Game
Objeta -se a todos, você pode ter um Game
Singleton, ou você pode usar notificações. Cada uma dessas abordagens tem vantagens, e qualquer uma que você escolher provavelmente é boa para um programa simples (pessoalmente, para um programa muito simples, eu usaria um singleton).
No primeiro esquema, em algum momento do programa, você cria um Game
objeto que tem alguns addToScore:
método. Você atribui esse objeto como uma propriedade em todos os outros objetos que precisam atualizar a pontuação. Cada uma dessas ligações [self.game addToScore:value]
. Essa abordagem torna um pouco mais simples os testes de unidade, mas pode ser um pouco tedioso de implementar.
No segundo esquema, você tem alguns Singleton compartilhado +[Game sharedGame]
. Quando você quiser atualizar a pontuação, ligue [[Game sharedGame] addToScore:value]
. Geralmente é o EASEIET a implementar.
No terceiro esquema, você tem algum objeto (Game
) que usa NSNotificationCenter
para observar alguma notificação. Quando você deseja atualizar a pontuação, basta publicar uma notificação que inclui o valor para adicionar seu dicionário de usuário. Isso é ótimo para manter as coisas extremamente dissociadas, mas novamente pode ser um pouco tedioso no caso mais comum.
Mas, como observa @chuck, você provavelmente está pensando demais, e pode voltar e trabalhar com alguns dos tutoriais para ter uma noção melhor de como essas coisas geralmente funcionam. O tipo de situação que você está descrevendo não é muito complicado.