Quanta conoscenza di C / C ++ è necessaria per lo sviluppo di Objective-C / iPhone?

8

In primo luogo, un po 'di background. Sono uno sviluppatore .Net (C #) e ho oltre 5 anni di esperienza nello sviluppo web e nelle applicazioni desktop. Da un po 'di tempo volevo esaminare lo sviluppo dell'iPhone, ma per un motivo o per l'altro sono sempre stato monitorato. Finalmente ho un potenziale progetto all'orizzonte, e ora sto andando a pieno ritmo imparando questa roba.

La mia domanda è questa: non ho mai fatto alcuna programmazione in C / C ++ fin dai tempi della scuola, da allora vivo in terra gestita. Quanta conoscenza è necessaria per avere successo come sviluppatore iOS? Ovviamente la gestione della memoria è qualcosa su cui dovrò essere consapevole (anche se con iOS 5 sembra esserci qualcosa chiamato ARC che dovrebbe semplificarmi la vita), ma che altro? Non sto parlando solo dell'API C (ad esempio, per ottenere il peccato di un numero, chiamo la funzione sin ()), questo è ciò che Google è per. Sto parlando di idiomi C / C ++ fondamentali che lo sviluppatore C # non conosce.

    
posta BFree 24.11.2011 - 02:50
fonte

3 risposte

7

Non ti preoccupare. Se conosci abbastanza C per essere in grado di scrivere chiamate di funzione, capire e scrivere espressioni aritmetiche e gestire i puntatori, probabilmente starai bene. Avrai comunque bisogno di imparare Objective-C, ovviamente, ma gran parte del codice che scriverai sarà più Objective-C della semplice vecchia C. Abituarsi allo stile Objective-C e imparare Cocoa Touch consumerà molto di più del tuo tempo rispetto a spazzolare su C.

Di solito dico alle persone che iniziano da zero di imparare C prima di saltare in Objective-C. Sostieni questo consiglio: l'apprendimento C ti insegnerà le conoscenze di base di cui hai bisogno per lavorare efficacemente in Objective-C. È necessario sapere cos'è una funzione, come utilizzare strutture di controllo come loop e istruzioni condizionali, come funzionano i vari tipi di dati di base, che cos'è una struct e così via. E dato che tutti i C sono un gioco leale in Objective-C, più C sai quanto meglio sarai pronto a capire il codice che potresti incontrare. Detto questo, molti compiti vengono svolti in modo diverso nell'Obiettivo-C, quindi gli idiomi C standard non sono necessariamente degli idiomi Objective-C standard. NSString e NSArray prendono il posto degli array in stile C. I puntatori sono onnipresenti, ma sono usati principalmente per riferirsi agli oggetti - l'aritmetica del puntatore non appare molto spesso. Invece di allocare direttamente la memoria, si creano oggetti.

Lo stesso vale per C ++ ... non avrai bisogno di molto C ++ per andare d'accordo in Objective-C. Ad un certo punto in futuro potrebbe essere necessario aumentare la conoscenza del C ++ per integrare alcuni codici C ++ esistenti in un'app e, a quel punto, potrebbe essere necessario dedicare un po 'di tempo all'apprendimento, ma non lasciare che si interrompa la conoscenza del C ++ dal provare la tua mano alla programmazione iOS.

    
risposta data 24.11.2011 - 03:26
fonte
1

Non è una risposta completa, ma è necessario consultare questo pdf per imparare Objective-C.

È una lettura davvero facile se ti piace leggere per imparare le lingue, invece di guardare esempi di codice o esempi. Finché hai una comprensione di OOP, raccogliere l'Obj-C è una navigazione fluida. La cosa che mi distingue davvero dall'apprendimento dell'iPhone dev è l'uso di Xcode, che è un'altra storia ....

Apple Obj-C

    
risposta data 24.11.2011 - 04:55
fonte
0

Dipende.

Un sottoinsieme del linguaggio di programmazione (a volte chiamato "le parti buone") di solito funziona bene se i tuoi obiettivi non spingono i limiti di quel sottoinsieme.

Se vuoi fare cose semplici sull'interfaccia utente (cose che potresti fare in un'app web), attaccare con i tipi di dati Cocoa e Foundation, e scrivere codice senza errori, potresti probabilmente ottenere conoscendo molto poco del Do sotto l'Obiettivo C.

Tuttavia, se si desidera eseguire l'elaborazione o l'analisi di audio, video, immagini (ecc.) di iOS, le API e il codice di esempio di riferimento con cui si lavorerà probabilmente sono principalmente in C e sono di tipo C.

Ma l'Objective C è un superset rigido di C, quindi gli errori di battitura e gli errori possono manifestarsi a qualsiasi livello dell'ambiente linguistico. Se il tuo codice ha dei bug, allora potresti aver bisogno di conoscere a fondo il puntatore C, il tipo di dati e il livello di heap per analizzare un crash e eseguirne il debug. L'obiettivo C non è "gestito" e quindi si può creare un groviglio nodoso in memoria o allo scopo o come un incidente completo.

    
risposta data 25.11.2011 - 01:28
fonte

Leggi altre domande sui tag