Pergunta

Sou muito novo no Objective-C e, como tenho aprendido, tenho tentado fazer meu próprio programa. A ideia existe uma variável (ou objeto?) totalSave, um método addToTotalSaved com um parâmetro saveAmount, e vários objetos (cada objeto daria o parâmetro saveAmount um valor diferente) que, quando agido, causará addToTotalSaved ser 'enviado', ou qualquer que seja a terminologia, para totalSave de modo a totalSave aumenta na quantidade correta.

Primeiro de tudo, se minha ideia de como o código funciona está completamente errado, você pode oferecer uma maneira melhor? ... Eu sinto que isso não deveria ser complexo - mas, caso contrário, minha pergunta é o que deveria totalSave ser? Um int? Um nsinteger? Um objeto?

Foi útil?

Solução

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.

Outras dicas

Parece que você deseja uma classe, contendo um valor inteiro com o total. Então você deseja dar a essa função ADDTOTOTAL (SOMENUM).

É concebível que você possa fazer isso tudo processualmente, mas se você quiser reutilizar esse total, eu recomendo enchê-lo em uma classe.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top