Domanda

Sono abbastanza nuovo di Objective-C e mentre ho imparato ho cercato di creare il mio programma. L'idea è che esiste una variabile (o oggetto?) Nominata totalSave, un metodo addToTotalSaved con un parametro saveAmount, e più oggetti (ogni oggetto darebbe il parametro saveAmount un valore diverso) che quando si è attivato causerà addToTotalSaved essere "inviato", o qualunque cosa sia la terminologia, a totalSave affinché totalSave aumenti dell'importo corretto.

Prima di tutto, se la mia idea di come funziona il codice è completamente sbagliato, potresti offrire un modo migliore? ... Sento che questo non dovrebbe essere complesso, ma altrimenti la mia domanda è cosa dovrebbe totalSave essere? Un int? Un nsinteger? Un oggetto?

È stato utile?

Soluzione

Sembra che tu l'abbia reso eccessivamente complesso. Ovviamente, l'idea non è davvero "c'è una variabile denominata totalSave"Dal momento che all'utente potrebbe interessarsi di meno di dove lo memorizzi e dal resto del tuo post, in realtà non ti interessa come lo memorizzi.

Detto questo, al fine di renderlo un po 'più concreto, pensiamo a uno stato di "punteggio totale" che numerose parti del programma potrebbero aggiungere. Ci sono un paio di approcci che potresti adottare. In ogni caso, probabilmente hai qualche oggetto da qualche parte che tiene traccia del punteggio. Lo chiameremo il Game oggetto, ma potrebbe essere un Level o altro.

Quindi ci sono tre grandi scuole di pensiero: puoi passare questo Game oggetto a tutti, puoi avere un Game singleton, oppure puoi usare le notifiche. Ognuno di questi approcci ha vantaggi e chiunque scegli probabilmente va bene per un semplice programma (personalmente, per un programma molto semplice, userei un singleton).

Nel primo schema, ad un certo punto del programma si crea un Game oggetto che ne ha alcuni addToScore: metodo. Assegna questo oggetto come proprietà su ogni altro oggetto che deve aggiornare il punteggio. Ognuna di quelle chiamate [self.game addToScore:value]. Questo approccio rende un po 'più semplice i test unitari, ma può essere un po' noioso da implementare.

Nel secondo schema, ne hai alcuni singleton condiviso +[Game sharedGame]. Quando si desidera aggiornare il punteggio, chiama [[Game sharedGame] addToScore:value]. Questo è generalmente l'easiet da attuare.

Nel terzo schema, hai qualche oggetto (Game) che usa NSNotificationCenter osservare qualche notifica. Quando si desidera aggiornare il punteggio, pubblichi semplicemente una notifica che include l'importo da aggiungere nel suo dizionario utente. Questo è ottimo per mantenere le cose estremamente disaccoppiate, ma di nuovo può essere un po 'noioso nel caso più abituale.

Ma come osserva @chuck, probabilmente lo stai pensando troppo, e potresti voler tornare indietro e lavorare attraverso alcuni dei tutorial per avere un'idea migliore di come funzionano di solito queste cose. Il tipo di situazione che stai descrivendo non è molto complicato.

Altri suggerimenti

Sembra che tu voglia una classe, contenente un valore intero con il totale. Quindi vuoi dare a quella funzione una funzione addtototal (somenum).

Concepibilmente potresti farlo tutto proceduralmente, ma se vuoi riutilizzare questo totale, ti consiglio di riempirlo in una classe.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top