Istanza di oggetto iOS accessibile da tre classi separate o carica 3 file di pennini con una classe?

0

Ho tre file di pennini nel mio progetto, ognuno dei quali è guidato dalla sua stessa classe (file .h e .m). Ogni pennino presenta un design stilizzato con un'immagine di sfondo a schermo intero e alcune immagini di sovrapposizione che fungono da pulsanti. Ogni pulsante ha il proprio suono pulsante-clic e la maggior parte dei pulsanti su ciascun file pennino riprodurrà un video diverso per pulsante.

Per riprodurre i video, ognuno dei miei tre file .m ha un paio di metodi simili a questo:

-(IBAction) videoButtonClicked: (id)sender{
    if([sender tag] == 1) {
        AudioServicesPlaySystemSound (buttonClick1);
        [self loadMoviePlayer:[[NSBundle mainBundle] pathForResource:@"Video 1" ofType:@"mov"]];
    } else if ([sender tag]  == 2) {
        AudioServicesPlaySystemSound (buttonClick2);
        [self loadMoviePlayer:[[NSBundle mainBundle] pathForResource:@"Video 2" ofType:@"mov"]];
    } else if ([sender tag]  == 3) {
        AudioServicesPlaySystemSound (buttonClick3);
        [self loadMoviePlayer:[[NSBundle mainBundle] pathForResource:@"Video 3" ofType:@"mov"]];
    } else if ([sender tag]  == 4) {
        AudioServicesPlaySystemSound (buttonClick4);
        [self loadMoviePlayer:[[NSBundle mainBundle] pathForResource:@"Video 4" ofType:@"mov"]];
        }
}

- (void)loadMoviePlayer:(NSString*) movieURL
{  
    // Play movie from the bundle
    NSURL *url = [NSURL fileURLWithPath:movieURL];

    player = [[MPMoviePlayerViewController alloc]
              initWithContentURL:url];

    [[NSNotificationCenter defaultCenter]
     addObserver:self
     selector:@selector(movieFinishedCallback:)
     name:MPMoviePlayerPlaybackDidFinishNotification
     object:player];

    [self presentMoviePlayerViewControllerAnimated:player];
    [player release];
}

Il mio codice funziona ora perché i video sono incorporati nella mia cartella delle risorse.

Tuttavia, insieme, i video sono troppo grandi per essere raggruppati con l'app e scaricati dall'App Store.

Quindi avrò l'app per scaricarli da un server, quindi voglio creare una classe di gestione video per tenere traccia di quali video sono stati scaricati. Penso che dovrei avere un'istanza dell'oggetto, ma come possono i miei tre controller parlare con l'unica istanza?

Sono abbastanza sicuro di avere una classe che carica il file .nib corretto , posso fare in modo che quell'istanza parli con la mia istanza di gestione video.

Ma dovrei essere sprecare inutilmente memoria caricando tutti e tre i pennini in una sola volta?

    
posta Thunder Rabbit 15.05.2012 - 13:41
fonte

1 risposta

0

Potresti fornire a ciascun controller di visualizzazione una proprietà che è il tuo negozio di film. Quindi puoi configurare ciascun controller di visualizzazione per utilizzare lo stesso oggetto:

  • se appare come il risultato di una transizione da un altro controller di visualizzazione, il controller precedente può passare il suo negozio di film al nuovo controller.
  • il primo controller di visualizzazione può ricevere il film store configurato dal suo file NIB o dal delegato dell'app, che è in definitiva responsabile della configurazione della finestra e quindi di ottenere il primo controller di visualizzazione pronto per essere visualizzato.
risposta data 15.05.2012 - 15:38
fonte

Leggi altre domande sui tag