Pergunta

Sendo um desenvolvedor de PHP bastante experiente e com um conhecimento justo de C (escreveu um experimento de computação distribuído com 16 dos microcontroladores NEC do meu pai), eu gostaria de mudar para o Objective-C e o cacau, eventualmente pretendendo integrar o Mac / Aplicativos para iPhone com alguns dos meus projetos PHP.

Passando pelo livro "Cocoa Programming for Mac OS X" de Arron Hiilegass, estou ficando um pouco frustrado. Sou capaz de trabalhar os exemplos, mas ele não explica exatamente Por quê Ele está usando uma classe dessa maneira (NSNumber em vez de int ou duplo, por exemplo).

Estou procurando um bom livro/livros para inclinar-se primeiro. Minha pergunta é: qual seria um bom livro? Estou analisando "Programação no Objective-C 2.0" e parece bastante decente. Para onde eu iria a partir daí? Estou pensando que devo reiniciar no meu livro de cacau.

Além disso, existem recursos na Internet que ajudariam na transição do PHP para o Objective-C? Eu sei que o PHP é uma linguagem de script de tibra frouxa, por isso tem suas diferenças. Há algumas coisas que simplesmente não fazem sentido com o OBJ-C e o cacau, por que não posso colocar inteiros em um nsmutablearray?

De qualquer forma. Obrigado pela ajuda! (Tenho apenas 14 anos, então vá com calma se eu cometi algum erro no meu Q.)

Foi útil?

Solução

Acabei de passar por "Programação no Objective-C 2.0", e é muito bom. Eu recomendaria, especialmente se você nunca usou C (ou se o esqueceu, como eu).

No entanto, a Apple realmente tem uma excelente documentação. Se você não se importa de ler online, eu começaria com o deles Introdução ao cacau página.

Outras dicas

Sou capaz de trabalhar os exemplos, mas ele não explica exatamente por que ele está usando uma classe dessa maneira (NSNumber em vez de int ou dobrar, por exemplo) ...

Há algumas coisas que simplesmente não fazem sentido com o OBJ-C e o cacau, por que não posso colocar inteiros em um nsmutablearray?

NSNumber é um tipo muito mais útil do que um tipo primitivo como int ou double, como é frequentemente usado em conjunto com outros objetos, você encontrará conforme o programa em cacau.

Por exemplo, para empacotar um número como um valor em uma matriz redimensível (como um NSMutableArray) ou uma matriz associativa (uma instância de NSDictionary), você precisa transformar o número primitivo (int, double, etc.) em um serializável, ou objeto arquivável - um NSNumber.

Primitivos não podem ser serializados, ao contrário de um NSNumber, porque os primitivos não estão no conjunto básico de tipos de "fundação principal" (NSNumber, NSArray, NSString, etc.) que a Apple trabalhou duro para disponibilizar para você.

Além disso, usando NSNumber Você também recebe muitos métodos de conveniência de bônus gratuitamente: você pode converter rapidamente o número em uma string, por exemplo, simplesmente digitando [myNumber stringValue].

Ou, se você está tratando o seu NSNumber Como o preço de algo ("US $ 1,23"), você pode aplicar um NSNumberFormatter Para garantir que as operações no número forneçam resultados que tenham o formato que você esperaria (por exemplo, se você adicionar dois valores de preço, esperaria obter um valor de moeda em troca).

Isso não quer dizer que você não pode ou não deve usar int ou double variáveis. Mas em muitos casos, você encontrará um NSNumber é uma opção melhor, pois você pode escrever menos código e obter muitas funcionalidades para "grátis".

Na minha experiência, achei que os documentos da Internet são úteis o suficiente para aprender OBJ-C e Cocoatouch. Minha progressão foi algo assim:

1) Assista aos vídeos do Apple Dev no iTunes (eles são gratuitos).

2) Leia Começando, Guia de programação de aplicativos para iPhone.

3) Leia OOP em Obj-C.

4) Leia mais: Fundamentos de cacau, Objective-C iniciador, Práticas de cacau.

5) Faça alguns tutoriais simples.

IMO: Todas as informações necessárias estão no site Apple Dev: iPhone. Economize seu dinheiro e não compre livros. Se você não entende "por que" algo é feito em um dos guias ou tutoriais, faça referência a ele imediatamente com outras fontes do Google.

Você tem que ter em mente que o curva de aprendizado aqui está Muito grande. Era para mim e estou estudando coisas assim todos os dias na faculdade. Então, fique com ele e leia de uma maneira inteligente (coisas que você conhece). O que vejo em mim mesmo é que, se eu entender como o iPhone funciona e conhece o fluxo de dados, a programação é principalmente um problema de sintaxe.

O PHP é muito diferente do Objective-C. Além disso, a maneira como os problemas de programação são resolvidos no PHP no contexto da Internet é muito diferente da maneira como os problemas de programação são resolvidos no OBJ-C, no contexto do iPhone. Por esse motivo, você deseja abordar o iPhone de uma nova perspectiva e como aluno/aprendiz. Reserve o seu tempo e concentre -se na programação e nas melhores práticas orientadas a objetos. Isso o abençoará nos próximos anos.

-Búfalo

Além disso, para responder às suas perguntas:

Objective-C é uma linguagem orientada a objetos construída como uma extensão em cima de C.

Como tal, fornece tipos primitivos (como int e duplo) e objetos.

O NSNumber é uma classe Objective-C que representa um número mais várias operações nesse número (métodos). A vantagem de usar um NSNumber sobre um tipo primitivo numérico é que ele pode ser usado de maneira orientada a objetos (você pode enviar mensagens para ele. em um método que espera um objeto etc).

Quanto ao NSMutableArray, esta é uma classe que fornece funcionalidade semelhante a uma matriz. Ele foi projetado para funcionar com os tipos de objetos Objective-C (é um contêiner de objetos e objetos do tipo NSObject que herdam deles) e essa é a razão pela qual ele não pode conter um número inteiro. No entanto, pode conter um nsinteger que é uma classe Objective-C que representa um número inteiro.

Eu pessoalmente tentaria primeiro aprender o Objetivo-C das referências da Apple em http://developer.apple.com/library/mac/navigation/ e indo para o cacau a partir daí.

Eu estava em um barco semelhante (PHP movendo para o Objective-C) e achei o melhor processo entrar em um projeto. Eu também passei pelo livro de Hillegass e foi um bom começo, mas a única maneira de conhecer um idioma é apenas me atrapalhar com um objetivo claro.

É doloroso, mas funciona. Café, APIs e Kleenex.

EDIT: Acabei de ler a última parte da sua postagem e vi que você tinha 14. Talvez mude o café com Coca -Cola :)

Meu tutorial de Objetivo-C favorito se você vier de qualquer lugar é o curso do iTunesu da programação de Stanford na iOS. O professor realmente coloca as coisas em perspectiva de outros livros e tutoriais on -line.

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