10 Características Objective-C que não estão em Swift

Se você é um desenvolvedor experiente Objective-C, esta lista você lembra de alguns recursos que você pode ser usado para que não estão disponíveis na Swift. Em cada caso, soluções e estratégias para a substituição de seus amigos tentou-e-verdadeiro Objective-C velhos são fornecidos. E não se preocupe: Na maioria dos casos, você vai acabar escrevendo menos código, e seu código será mais robusto.

Dizer adeus a arquivos de cabeçalho (.h)

Em Swift, o cabeçalho (.h) arquivos são ido. o .h e .m arquivos para cabeçalhos e corpos (originalmente chamado de mensagens) de uma classe são consolidados em um único .rápido Arquivo.

Dizendo adeus a ponteiros oscilantes (quase sempre)

É difícil (mas não impossível) para fazer referência a um ponteiro pendurado na Swift. Ao longo dos últimos anos, Objective-C também fez tais referências mais difícil, mas eles permanecem distintamente possível. Você pode evitar problemas com essas referências se ter certeza de que os ponteiros para instâncias são sempre definidas antes de serem usados, e que está pronto para nada antes que a instância é desalocada. Swift usa muito poucos pontos, de modo que não pode balançar.

Esquecendo-se variáveis ​​não inicializadas e propriedades

Swift requer inicialização de propriedades declaradas, variáveis ​​e constantes. Isso remove imediatamente todo um conjunto de problemas que podem ocorrer quando você faz referência a variáveis ​​não inicializadas e tanto pode falhar ou causar erros inesperados (e muitas vezes irrepetíveis).

Explorando uma superclasse comuns como NSObject

A maioria dos objetos em Objective-C são subclasses de NSObject- quase todas elas conformes à NSObject protocolo. Assim, coleções, tais como NSArray e NSDictionary pode conter objetos de qualquer tipo, desde que eles são subclasses de NSObject. Em Swift, os elementos de uma matriz ou dicionário não têm uma superclasse comum, mas eles têm de ter um tipo comum, de modo que eles podem ser manipulados. Esta é agora sua responsabilidade.

Tipo de Gerenciamento de fundição

Objective-C gere tipo de fundição, onde ele pode, mas se a sua suposição sobre o elenco correta difere de Objective-C de, seu código pode falhar. Com Swift, você tem que fazer o casting explicitamente. No entanto, Swift pode inferir um tipo de valores iniciais de variáveis ​​ou constantes, assim, no cômputo geral, o código é mais robusto e você pode realmente precisar de menos, porque você pode deixar tipos Inferir Swift para você.

Preferindo encerramentos de blocos

Blocos em Objective-C são como fechamentos em outros idiomas. Em Swift, essa função é fornecida por meios de obturação, e a documentação reflete este uso.

Livrar-se do gerenciamento de memória legado

Embora o gerenciamento de memória manual com alloc e dealloc foi # 173-preterido no Swift, muito código ainda existe que ou usa-lo ou se refere a ele em comentários e linhas comentadas-out de código. Se você estiver convertendo código antigo, em vez de escrever código novo Swift a partir do zero, vale a pena para remover esses vestígios de gerenciamento de memória manual. É muito improvável que eles vão voltar.

Substituindo decoradores de propriedade

Em vez de Objective-C decoradores de propriedade de, Swift tem anotações em declarações. A mistura de atributos, tais como a somente leitura, Forte, fraco, e similares, é ido com Swift. A informação necessária é englobado em tipos.

Usando o estilo Swift para acessar as propriedades de classe

estilo Swift usa sintaxe de ponto para referenciar os objetos dentro de uma classe, estrutura ou enumeração. Remova qualquer sintaxe baseada em suporte de sobra.

Clarificar o controle de acesso Swift

As directivas de privacidade em Objective-C são tratados de forma diferente em Swift. Em Objective-C que você use as seguintes diretrizes:

  • @privado

  • @protegido

  • @público

As declarações de métodos e propriedades também podem ser colocados tanto na .h arquivo ou em uma extensão de classe de um .m Arquivo. Isto proporciona duas maneiras disjuntos de # 173 especificando visibilidade.

Swift tem nenhuma .h ou .m arquivos e, portanto, não há extensões de classe com hiddendeclarations. Tem um modelo de controle de acesso único usando

  • público

  • privado

  • interno

Estes são parte da própria linguagem, em vez de serem diretivas de compilador.

menu