Usando o iPhone OS 3.0 chamadas de função em lugar do obsoleto 2.2 chamadas de função em 2,2 dispositivos

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

Pergunta

Se eu definir Base SDK + ativa de um aplicativo para iPhone para 3.0 e o destino de implementação para 2,2, posso usar as novas versões de funções em 2,2 dispositivos?

Por exemplo, UITableViewCell exige agora uma imagem a ser definida usando [cell.imageView setImage:image], enquanto que no 2.2, você chamaria [cell setImage:image]. Vai usar o novo acidente [cell.imageView setImage:image] em 2,2 dispositivos?

Foi útil?

Solução

Nope você não pode nos OS 3.0 apela 2.2. método obsoleto deve ser comportar como normal pelo menos em OS 3. Deprecation em muitos casos no OS, apenas significa que a Apple recomendam usando novos métodos em vez mais, em seguida, obsoleto; mas esses métodos podem desaparecer no futuro também.

Você tem algumas opções:

  1. Simplesmente ignorando os avisos, enquanto aplicativo e métodos realmente trabalhar no OS 3.0.
  2. Tenha uma verificação de tempo de execução para determinar a versão do sistema operacional, e invocar o método apropriado:

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

    ou melhor ainda:

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

    Note que uma verificação de tempo de compilação, usando directivas ifdef não funcionará

  3. Dropping OS 2.2 apoio. É bastante razoável para você só para direcionar 3.0, bem como, como a absorção de 3.X é bastante elevada. No caso do meu pequeno aplicativo, em dezembro eu tinha 27 usuários em pré-3.0 sistemas de 2.058 usuários. Escusado será dizer, esta opção reduz significativamente a sua necessidade de testes.

Outras dicas

Não, você não pode usar OS 3.0 chama em um dispositivo 2.x. Eu ficaria surpreso se você pode até mesmo instalar um aplicativo 3.0-alvo em um dispositivo 2.x.

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