Começando iOS programação para Dummies

programação iOS, Objective-C, orientação a objetos e design OO ir juntos. Leia sobre algumas dicas rápidas votos para OO projeto. É hora de chegar até a velocidade!

Projetar "boas" as classes

Suas aulas devem ser altamente coesa e de baixo acoplamento. Aqui está uma lista de verificação para testar rapidamente se uma classe é bom: um "não" resposta a qualquer das perguntas significa que pode ser necessário repensar a sua classe.

  • você pode dar a classe um nome que captura a sua razão de ser?

  • você pode dar uma descrição que diz que ele faz apenas uma coisa?

  • Será que ela tem responsabilidades (métodos)? São todas as responsabilidades em alinhamento com a descrição?

  • Será que ela tem colaboradores?

  • Será que ela - ou de seus componentes - manter o estado de vida longa?

Fazendo um tipo de uma subclasse de uma classe existente ou usar a delegação

Diga que você precisa de um tipo chamado Tiger e parece compartilhar as responsabilidades de um animal. Portanto, você está tentando decidir se você deve declarar Tiger como uma subclasse de uma classe chamada Animal, ou talvez declarar uma variável membro do tipo Animal e delegar responsabilidades animalescos a esta variável de membro.

Diga estas duas frases em voz alta:

  • Tiger IS-A um animal.

  • Tiger CAN-ser um animal.

Se o primeiro faz mais sentido (que, neste caso, faz), tigre deve ser uma subclasse de animal.

O cumprimento dos Métodos e plataformas iOS App

Ao escrever um aplicativo iOS, é muito importante entender e tecer código específico do aplicativo em seu ciclo de vida. Tentando descobrir qual o método do ciclo de vida de usar? Veja esta lista:

  • Usar willFinishLaunchingWithOptions fazer qualquer direito processamento após o aplicativo é iniciado e antes de exibir a sua primeira janela, e antes de ele ainda tem um estado restaurado.

    Você normalmente usar esse método para verificar se os parâmetros de inicialização para o aplicativo (como um URL) estão corretas. Você também pode verificar o ambiente em que o aplicativo é iniciado (por exemplo, se ele lançar em um iPad que tem a capacidade de fazer chamadas de celular). Aliás, este método não irá funcionar em um dispositivo com uma versão iOS mais velho do que iOS 6.

  • Usar didFinishLaunchingWithOptions para fazer qualquer processamento após tiver certeza de que o aplicativo vai começar.

    Por exemplo, você pode usar este método para restaurar um estado global.

  • Usar applicationDidBecomeActive a fim de reiniciar um processo que foi interrompido enquanto o aplicativo estava inativo.

    Por exemplo, você poderia começar a ouvir alterações de local ou até mesmo atualizar a interface do usuário com dados novos.

  • Usar applicationWillResignActive para pausar o aplicativo enquanto o usuário dá a sua atenção para outra atividade - como atender uma chamada de telefone.

  • Usar applicationDidEnterBackground para liberar recursos e salvar os dados do usuário, juntamente com informações de estado app suficiente para restaurar o aplicativo para seu estado atual no caso é encerrado mais tarde.

    Você está autorizado cerca de cinco segundos de processamento neste método, por isso não executar nenhuma tarefa que não pode terminar - como avisar o usuário.

  • Usar applicationWillEnterForeground para desfazer o que você fez no applicationDidEnterBackground.

  • Usar applicationWillTerminate para fazer todas as tarefas finais de limpeza.

Fazendo seu iOS Apps próprias para consumo

o desempenho do programa iOS é mais do que processos em segundo plano. Alguns truques simples podem economizar tempo e aumentar o desempenho. Para a história em linha reta, confira essas dicas.

Rapidamente encontrar e abrir arquivos relevantes no Xcode

Use o comando abrir rapidamente para encontrar e abrir um arquivo em uma linha específica, usando seu nome de arquivo, tipo ou um símbolo no arquivo (como um nome de variável ou função), como segue:

  1. Escolha File- abrir rapidamente.

  2. No campo de busca, digite caracteres no nome do arquivo ou símbolo que deseja visualizar.

  3. Digite um ponto seguido por um ou mais caracteres da extensão do arquivo.

  4. Para ter o arquivo aberto em uma linha específica, digite dois-pontos seguido pelo número da linha.

  5. Escolha um arquivo da lista de resultados.

Esta caixa de diálogo também permite que você decidir onde colocar um arquivo no Xcode. Basta pressionar e segurar CMD + OPT + SHIFT ao clicar duas vezes no arquivo.

Configurando comportamentos

Você pode configurar como Xcode responde a eventos comuns, definindo o seu comportamento usando a página de configurações do Xcode-Preferências-comportamento para definir as preferências de comportamento.

Por exemplo, você pode ter um certo conjunto de guias aparecem quando Xcode funciona a sua aplicação. Ou, se uma compilação falhar, você pode fazer Xcode salvar um instantâneo e abrir a área de depuração na janela do seu espaço de trabalho.

Criação de um arquivo .gitignore

Xcode pode facilmente se conectar com git, um sistema de gerenciamento de código fonte popular. Se usado sem qualquer configuração, git irá tentar arquivar tudo em um projeto, até mesmo arquivos com código compilado objeto, executáveis ​​e arquivos temporários usados ​​pelo Xcode.

Para corrigir esse problema, você precisa criar configure git adequadamente. Para fazer isso, navegue até a pasta do projeto e criar um .gitignore arquivo com o seguinte conteúdo:

OS X Finder.DS_Store # Xcode configuração por usuário * * .mode1 .mode1v3 * .mode2v3 * .perspective * .perspectivev3 * .pbxuser * .xcworkspacexcuserdata # Construir productsbuild / *. * O * .LinkFileList .hmap # arquivos de backup automático * ~ .nib / *. swp * ~ 

Aparecendo uma visão Alerta

Seu aplicativo muitas vezes precisa aparecer um alerta para que o usuário saiba algo aconteceu e que ela tem uma escolha de ações. Aqui está uma lista de verificação rápida para saber como configurar um alerta.

  1. implementar o clickedButtonAtIndex método na classe que fará com que o alerta de pop-up.

    O seguinte exemplo de código mostra como:

    - (Void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) buttonIndex {if (buttonIndex == 0) {[auto playNewGame] -} else if (buttonIndex == 1) {}} regresso-
  2. Criar, inicializar e mostrar o alerta.

    O seguinte trecho de código mostra como:

UIAlertView * alerta = [[UIAlertView alloc] inicialização] - [setTitle alerta: @ "Game Over!"] - [SetMessage alerta: @ "? Jogar outro jogo"] - [addButtonWithTitle alerta: @ "Sim"] - [addButtonWithTitle alerta : @ "Não"] - [setDelegate alerta: self] - [mostrar alerta] -

Ligar o iOS Apps

Seu aplicativo iOS pode precisar se comunicar com uma variedade de outros recursos. Felizmente, a caixa de ferramentas iOS tem uma variedade de conexões especializadas. Uma pick up e colocá-lo para trabalhar.

Abertura de um navegador de seu aplicativo

Aqui está uma maneira rápida e suja de ter seu aplicativo abre uma página da web em um navegador. Veja o seguinte exemplo de código:

- (IBAction) helpViaBrowser: (id) {remetente [[UIApplication sharedApplication] openURL: [NSURL URLWithString: @ "https://en.wikipedia.org/wiki/Tictactoe"]] -

Sim, é assim tão simples!

Convertendo um endereço para um geolocalização

A maioria mapeamento ou aplicativos baseados em localização tem uma necessidade para converter uma cadeia de texto que contém um endereço ou um local coordenadas geo-codificados. Felizmente, o quadro iOS fornece um geocodificador embutido. O código a seguir mostra como usar o geocoder:

# 133-NSString * findString = [texto findTextField] - // the string é lida a partir de um campo de texto [mygeocoder geocodeAddressString: findString completionHandler: ^ (NSArray * marcadores, NSError * erro) {MKPlacemark * aPlacemark = [marcadores objectAtIndex: 0] - // aPlacemark contém as informações geocodificados # 133 -}] - # 133-

Testes para capacidades de rede

É uma boa idéia para testar o que estão disponíveis recursos de rede antes de seu aplicativo tenta usar a rede. Veja como você pode fazer este teste:

  • Você tem que trazer em dois arquivos adicionais - ou seja, Reachability.h e Reachability.m - a partir do site do desenvolvedor da Apple no seu projeto.

    Você pode encontrar esses arquivos aqui: https://developer.apple.com/Library/ios/samplecode/Reachability/Reachability.zip.

  • Você tem que incluir Reachability.h em seu código.

    O seguinte trecho de código mostra como ver qual rede está disponível:

+ (nulos) listCapabilities {// testes para o networkNSString * networkReachability = nil-acessibilidade * reachFacade = [acessibilidade reachabilityForInternetConnection] Estado -NetworkStatus = [reachFacade currentReachabilityStatus] -se (status == NotReachable) networkReachability = @ "Sem rede n" - else if (status == ReachableViaWiFi) networkReachability = @ "Wi-Fi disponível n" -else se (status == ReachableViaWWAN) networkReachability = @ "WAN disponíveis n" - # 133- [textVal appendString: networkReachability] - # 133-}

começando sensores

Antes que você possa ler os valores detectados, você tem que iniciar e configurar o gerenciador de movimento. O código a seguir mostra como:

# 133 - // Configurar o movimento managerself-> MotionManager = [[CMMotionManager alloc] Init] -self-> motionManager.accelerometerUpdateInterval = 1-auto> motionManager.gyroUpdateInterval = 1-auto> MotionManager. magnetometerUpdateInterval = 1- # 133-

No entanto, apenas começando o gerente de movimento não é suficiente. Você também tem que começar a monitorar os sensores, como mostrado aqui:

- (IBAction) startMonitoringSensors:(id)sender{[self->motionManagerstartAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler: ^ (CMAccelerometerData * accelerometerData, NSError * erro) {[self handleAccelerationUpdates:accelerometerData.acceleration]-}]-[self->motionManagerstartGyroUpdatesToQueue:[NSOperationQueue currentQueue] withHandler: ^ (CMGyroData * gyroscopeData, NSError * erro) {[self handleGyroUpdates:gyroscopeData.rotationRate]-}]-[self->motionManagerstartMagnetometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler: ^ (CMMagnetometerData * magnetometerData, NSError * erro) {[auto handleMagnetometerUpdates: magnetometerData. campo magnético]-}]-}

menu