Utilizzando chiamate di funzione 3.0 iPhone OS in luogo del deprecato funzione 2.2 invita 2.2 dispositivi

StackOverflow https://stackoverflow.com/questions/2012887

Domanda

Se ho impostato la Base + SDK attivo di un'applicazione per iPhone a 3,0 e la destinazione di distribuzione a 2.2, posso usare le nuove versioni di funzioni 2.2 dispositivi?

Per esempio, UITableViewCell ora richiede un'immagine da impostare con [cell.imageView setImage:image], mentre in 2.2, si chiamerebbe [cell setImage:image]. Sarà utilizzando il nuovo incidente [cell.imageView setImage:image] su 2.2 dispositivi?

È stato utile?

Soluzione

No non si può noi OS 3.0 invita 2.2. Metodo obsoleto dovrebbe essere comportarsi come normale, almeno in OS 3. Deprecation in molti casi nel sistema operativo, significa solo che Apple consiglia di utilizzare nuovi metodi piuttosto quelli poi deprecato; ma questi metodi possono scomparire anche in futuro.

Hai alcune opzioni:

  1. Semplicemente ignorando gli avvertimenti, finché app e metodi effettivamente lavorare su OS 3.0.
  2. Avere un controllo di runtime per determinare la versione del sistema operativo, e invocare il metodo appropriato:

    double version = [[[UIDevice currentDevice] systemVersion] doubleValue];
    if (version >= 3.0) {
        [cell.imageView setImage:image];
    } else {
        [cell setImage:image];
    }
    

    o meglio ancora:

    if ([cell respondsToSelector:@selector(imageView)]) {
         [cell.imageView setImage:image];
    } else {
         [cell setImage:image];
    }
    

    Si noti che un controllo di fase di compilazione, utilizzando le direttive ifdef non funziona

  3. Dropping OS 2.2 di sostegno. E 'abbastanza ragionevole per voi di indirizzare solo 3,0 pure, come l'assorbimento di 3.X è piuttosto elevata. Nel caso della mia piccola applicazione, nel mese di dicembre ho avuto 27 utenti su pre-3.0 sistemi di 2.058 utenti. Inutile dire che questa opzione riduce il test bisogno in modo significativo.

Altri suggerimenti

No, non è possibile utilizzare OS 3.0 chiamate su un dispositivo 2.x. Sarei sorpreso se si può anche installare un app a 3.0 mirati su un dispositivo 2.x.

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