Vai al contenuto

Consigli Obj-c


Messaggi raccomandati

Ciao a tutti! :)

Qualche mese fa avevo comprato questo libro con l'intento di imparare l'obj-c durante le vacanze... ovviamente l'istinto di oziare ha vinto su quello di imparare (purtroppo) e così ho letto solo 100 pagine circa...

Volevo chiedervi: come vi sembra come libro? se l'avete letto, sapete una volta finito con che conoscenza si arriva? proprio solo basi basi o va abbastanza bene per continuare una programmazione "solitaria" senza l'aiuto di altri libri/guide?

P.S: La programmazione ad oggetti mi sembra un po' incasinata, o comunque non riesco ad entrare nell'ottica... sono "abituato" alla programmazione procedurale (se così si chiama) del C, e ogni volta che provo a fare qualcosa in Obj-C mi viene da pensare il programma in modo procedurale (ad esempio mettendo selezioni e iterazioni ovunque, invece è completamente diverso qui...)

iMac 27" ------ Macbook Air 13" ------ iPhone 3GS Black 16GB ------ iPhone 5 Black 32GB ------ 2 iPod Shuffle 1GB

Link al commento
Condividi su altri siti

  • Risposte 62
  • Creato
  • Ultima Risposta

Il libro non lo conosco (a dire la verità non conosco nemmeno l'Obj-C, almeno per ora).

Vengo da .NET e Java principalmente, nonostante conosca anche il C.

Sicuramente la programmazione a oggetti è un primo ostacolo da affrontare, forse dovresti comprare un libro che parta dalle basi e spieghi anche l'OOP.

Es.

Io usavo ActionScript 2 per Flash, a oggetti ma abbastanza semplicistico.

Quando uscì ActionScript 3, con un molto più forte orientamento agli oggetti, mi trovai un po' spiazzato.

Inizialmente lo usai come usavo prima AS 2, poi in università seguii un corso di Ingegneria del software di 1° livello, dove approfondii Java e l'OOP in generale.

Questo mi diede una forte spinta per usare AS 3 seriamente.

 MacBook Pro 17" Unibody, Intel Core 2 Duo 2.66GHz 6MB L2 cache, Crucial C300 SSD 256GB, Geforce 9400M + 9600M GT 512MB GDDR3, Crucial 8GB DDR3 RAM @ 1066MHz 

iPhone 4 16 GB - iOS 5.0.1 untether jailbroken with redSn0w 0.9.10 b4

Link al commento
Condividi su altri siti

Sicuramente prima ti conviene leggere qualche libro di introduzione alla programmazione ad oggetti, che non è per nulla difficile ma è completamente diversa da quella procedurale. Xcode è fatto veramente male e porta a fare una grande confusione.

Io la programmazione ad oggetti l'ho imparata sul Java, poi per gli altri linguaggi af oggetti cambia solo la sintassi ma i concetti sono identici.

Cercati un libro sulla programmazione ad oggetti, non necessariamente in obj c

Antivirus su mac? No grazie!! Utente Mac dal 10 aprile 2009.

 MacBook air 13, MacBook White 13, Canon Eos 1100D, Nexus5  . Lurker. Tartassala!! ToDo: Tentare di conquistare il mondo!!

Link al commento
Condividi su altri siti

Tra l'altro potresti leggerti anche le slide di qualche università un po' seria...tipo politecnico di milano o altri... le slide dovrebbero essere libere, i corsi però non saprei come si chiamano..

Antivirus su mac? No grazie!! Utente Mac dal 10 aprile 2009.

 MacBook air 13, MacBook White 13, Canon Eos 1100D, Nexus5  . Lurker. Tartassala!! ToDo: Tentare di conquistare il mondo!!

Link al commento
Condividi su altri siti

Ciao a tutti! :)

Qualche mese fa avevo comprato questo libro con l'intento di imparare l'obj-c durante le vacanze... ovviamente l'istinto di oziare ha vinto su quello di imparare (purtroppo) e così ho letto solo 100 pagine circa...

Volevo chiedervi: come vi sembra come libro? se l'avete letto, sapete una volta finito con che conoscenza si arriva? proprio solo basi basi o va abbastanza bene per continuare una programmazione "solitaria" senza l'aiuto di altri libri/guide?

Il libro non è per niente male come inizio(ho incominciato Obj-C/Cocoa proprio con questo libretto qui), se sei abbastanza "sveglio" da essere in grado, dopo aver letto il libro, di cercare aiuto sul (ottimo) manuale Apple (quello online intendo), potresti non aver bisogno di altro per iniziare il tuo primo progetto "serio". Il resto lo fa l'esperienza e la voglia di imparare, comprare centinaia di libri e poi non leggerli ovviamente non serve a niente ;)

 MacBook 7.1 - SanDisk Extreme 120GB SSD - 8GB RAM - OSX Mavericks -  iPhone 5S 32GB -  iPad 4 16GB
[.          ] Patience left: 5%

Link al commento
Condividi su altri siti

Il libro non è per niente male come inizio(ho incominciato Obj-C/Cocoa proprio con questo libretto qui), se sei abbastanza "sveglio" da essere in grado, dopo aver letto il libro, di cercare aiuto sul (ottimo) manuale Apple (quello online intendo), potresti non aver bisogno di altro per iniziare il tuo primo progetto "serio". Il resto lo fa l'esperienza e la voglia di imparare, comprare centinaia di libri e poi non leggerli ovviamente non serve a niente ;)

Ottimo! :D

Oggi l'ho riaperto e devo dire che mi sono dimenticato molte cose XD

Quindi stasera mi armerò di pazienza, di una matita, di un foglio e di un Mac (lol) e lo ricomincerò... (la matita e il foglio li uso per prendere appunti, visto che ci sono cose che continuo a scordarmi .-.)

P.S: Nella vecchia versione di Xcode 4.0 (o forse 4.2) non c'era la necessità di usare le varie cose per liberare o allocare la memoria, perché da come ho capito lo faceva in automatico... meglio se lo disattivo (se ritrovo la guida su come disattivarlo) in modo da impararlo meglio o lo lascio pensando che funzioni bene (o forse meglio)?

P.P.S: Domanda un po' stupida... quanto c'hai impiegato per imparare l'Obj-C? Io col libro ho un difetto: leggo 10-20 pagine, le capisco e preso dalla curiosità ne leggo altre 20, e così via fino ad arrivare 30-40 al giorno... il problema è che facendo così il giorno dopo faccio fatica a ricordare tutto... quindi, tu come hai fatto? Ti sei auto-limitato a 5 pagine al giorno o ti ricordavi tutto anche con 40 pagine al giorno? (io penso che dovrò auto-limitarmi...)

iMac 27" ------ Macbook Air 13" ------ iPhone 3GS Black 16GB ------ iPhone 5 Black 32GB ------ 2 iPod Shuffle 1GB

Link al commento
Condividi su altri siti

P.S: Nella vecchia versione di Xcode 4.0 (o forse 4.2) non c'era la necessità di usare le varie cose per liberare o allocare la memoria, perché da come ho capito lo faceva in automatico... meglio se lo disattivo (se ritrovo la guida su come disattivarlo) in modo da impararlo meglio o lo lascio pensando che funzioni bene (o forse meglio)?

Quello di cui parli si chiama garbage collector, se non ricordo male per applicazioni Mac si può disattivare o meno, su iOS invece questo non è proprio presente. Fossi in te, lo lascerei così com'è impostato in Xcode ma proverei comunque a gestirmi manualmente la memoria che alloco (se non erro, c'è un capito dedicato alla memoria dinamica sul libro, è un po' che non lo apro).

P.P.S: Domanda un po' stupida... quanto c'hai impiegato per imparare l'Obj-C? Io col libro ho un difetto: leggo 10-20 pagine, le capisco e preso dalla curiosità ne leggo altre 20, e così via fino ad arrivare 30-40 al giorno... il problema è che facendo così il giorno dopo faccio fatica a ricordare tutto... quindi, tu come hai fatto? Ti sei auto-limitato a 5 pagine al giorno o ti ricordavi tutto anche con 40 pagine al giorno? (io penso che dovrò auto-limitarmi...)

Allora, intanto va detto che l'Objective C/Cocoa non l'ho ancora "imparato", lo sto ancora studiando (pian piano, tra esami, università ed il lavoro il tempo libero non è molto). Io non mi sono mai auto-limitato, personalmente lo trovo un po' ridicolo, il mio "metodo di studio" consiste in aprire il libro/guida, leggere un capito/una parte e mettere immediatamente in pratica quello che ho appreso, senza impormi un limite (continuo a leggere finché non mi accorgo di avere qualcosa da provare insomma). Finora il metodo ha funzionato benissimo con C, C++, librerie Qt, SDL e, ora, Objective-C.

 MacBook 7.1 - SanDisk Extreme 120GB SSD - 8GB RAM - OSX Mavericks -  iPhone 5S 32GB -  iPad 4 16GB
[.          ] Patience left: 5%

Link al commento
Condividi su altri siti

Quello di cui parli si chiama garbage collector, se non ricordo male per applicazioni Mac si può disattivare o meno, su iOS invece questo non è proprio presente. Fossi in te, lo lascerei così com'è impostato in Xcode ma proverei comunque a gestirmi manualmente la memoria che alloco (se non erro, c'è un capito dedicato alla memoria dinamica sul libro, è un po' che non lo apro).

Ho guardato in internet e penso si chiami ARC.

Sì, il capitolo c'è e l'avevo già fatto, ed è stato lì che avevo scoperto di questo ARC, visto che non mi faceva compilare...

Allora, intanto va detto che l'Objective C/Cocoa non l'ho ancora "imparato", lo sto ancora studiando (pian piano, tra esami, università ed il lavoro il tempo libero non è molto). Io non mi sono mai auto-limitato, personalmente lo trovo un po' ridicolo, il mio "metodo di studio" consiste in aprire il libro/guida, leggere un capito/una parte e mettere immediatamente in pratica quello che ho appreso, senza impormi un limite (continuo a leggere finché non mi accorgo di avere qualcosa da provare insomma). Finora il metodo ha funzionato benissimo con C, C++, librerie Qt, SDL e, ora, Objective-C.

Io invece in modo auto-didatta ho solo imparato html/css (ma non in modo molto approfondito), perché il C lo studio a scuola (e con un profe che spiega è tutta un'altra cosa...)

Per l'Obj-C avevo fatto come te, cioè leggevo, se non capivo rileggevo, e appena c'era qualcosa da scrivere a computer lo mettevo e cercavo di capire che stavo facendo. Il problema è che (sarò un po' duro io...) dopo 1-2 giorni facevano fatica i concetti a rimanere in testa...

Comunque adesso leggo quella guida di html.it che ho postato prima, visto che è corta (o almeno la parte che mi interessa), poi domani provo a fare un solo capitolo del libro e procedere massimo un capitolo al giorno... vediamo se (per me) è meglio...

iMac 27" ------ Macbook Air 13" ------ iPhone 3GS Black 16GB ------ iPhone 5 Black 32GB ------ 2 iPod Shuffle 1GB

Link al commento
Condividi su altri siti

Ho guardato in internet e penso si chiami ARC.

Sì, il capitolo c'è e l'avevo già fatto, ed è stato lì che avevo scoperto di questo ARC, visto che non mi faceva compilare...

Ah sì, l'automatic reference counting. È un concetto collegato al garbage collector comunque ;) Comunque la regola base è questa: quando richiedi una risorsa, ricordati di liberarla quando non ti serve.

Io invece in modo auto-didatta ho solo imparato html/css (ma non in modo molto approfondito), perché il C lo studio a scuola (e con un profe che spiega è tutta un'altra cosa...)

Per l'Obj-C avevo fatto come te, cioè leggevo, se non capivo rileggevo, e appena c'era qualcosa da scrivere a computer lo mettevo e cercavo di capire che stavo facendo. Il problema è che (sarò un po' duro io...) dopo 1-2 giorni facevano fatica i concetti a rimanere in testa...

Comunque adesso leggo quella guida di html.it che ho postato prima, visto che è corta (o almeno la parte che mi interessa), poi domani provo a fare un solo capitolo del libro e procedere massimo un capitolo al giorno... vediamo se (per me) è meglio...

Vedrai che con la pratica, volente o nolente, impari ;) è questione di tempo

 MacBook 7.1 - SanDisk Extreme 120GB SSD - 8GB RAM - OSX Mavericks -  iPhone 5S 32GB -  iPad 4 16GB
[.          ] Patience left: 5%

Link al commento
Condividi su altri siti

Nelle ultime versioni, se non ricordo male dalla 4, anche in iOS si ha il GC.

Ciò non toglie che sia buona regola quella suggerita da Beta 91, ovvero liberare la memoria quando non la utilizzi più.

 MacBook Pro 17" Unibody, Intel Core 2 Duo 2.66GHz 6MB L2 cache, Crucial C300 SSD 256GB, Geforce 9400M + 9600M GT 512MB GDDR3, Crucial 8GB DDR3 RAM @ 1066MHz 

iPhone 4 16 GB - iOS 5.0.1 untether jailbroken with redSn0w 0.9.10 b4

Link al commento
Condividi su altri siti

ARC non è un garbage collector (la differenza è abissale).

Il GC era presente solo su OS X da 10.5 a 10.7. È stato deprecato dal 10.8.

Ora di default c'è attivato ARC (che semplicemente inserisce automaticamente i retain/release/autorelease invece di lasciare a mano a te il compito di specificarli. Ma devi comunque continuare a dire se una variabile è "strong" o "weak")

Link al commento
Condividi su altri siti

Parlo per sentito dire, non ho mai programmato in Obj-C.

Come mai deprecare in GC in Mountain Lion?

 MacBook Pro 17" Unibody, Intel Core 2 Duo 2.66GHz 6MB L2 cache, Crucial C300 SSD 256GB, Geforce 9400M + 9600M GT 512MB GDDR3, Crucial 8GB DDR3 RAM @ 1066MHz 

iPhone 4 16 GB - iOS 5.0.1 untether jailbroken with redSn0w 0.9.10 b4

Link al commento
Condividi su altri siti

Non è la soluzione se implementato di merda, se implementato bene toglie tanto lavoro, soprattutto in un'ottica OO

 MacBook Pro 17" Unibody, Intel Core 2 Duo 2.66GHz 6MB L2 cache, Crucial C300 SSD 256GB, Geforce 9400M + 9600M GT 512MB GDDR3, Crucial 8GB DDR3 RAM @ 1066MHz 

iPhone 4 16 GB - iOS 5.0.1 untether jailbroken with redSn0w 0.9.10 b4

Link al commento
Condividi su altri siti

Comunque mi sono letto la guida OOP di html.it

Loro l'Obj-C non lo citavano neanche (quindi non ho potuto vedere esempi concreti di quello che spiegavano) ma non mi è sembrato impossibile... (mi è sembrato un po' più chiaro del libro)

iMac 27" ------ Macbook Air 13" ------ iPhone 3GS Black 16GB ------ iPhone 5 Black 32GB ------ 2 iPod Shuffle 1GB

Link al commento
Condividi su altri siti

  • 3 settimane dopo...

Non è la soluzione se implementato di merda, se implementato bene toglie tanto lavoro, soprattutto in un'ottica OO

L'ARC è altrettanto efficace ma non ha bisogno di un altro thread, molto semplicemente aggiunge codice epr liberare la memoria, l'unica cosa a cui si deve stare attenti è evitare di avere due oggetti strong che si puntano a vicenda, per il resto ci si può dimenticare di gestire la memoria.

Un Tetris in vecchio stile, dedicato alla versione per Mac degli anni 80.

Link al commento
Condividi su altri siti

Ok, adesso (se non sarò sommerso di compiti le prossime settimane) ho ripreso l'obj-c...

Per adesso sono arrivato a un risultato simile: http://imageshack.us/a/img802/4473/87191487.png (il tasto = non fa nulla e in generale non mi piace moltissimo come funzionano i comandi... probabilmente con prossime "versioni" cercherò di programmarlo in un modo migliore...)

Come risultato è sicuramente quasi nullo (voi farete una cosa del genere in tipo mezzo secondo XD), ma per me invece è tanto, perché attiva la voglia di programmare dentro di me XD

iMac 27" ------ Macbook Air 13" ------ iPhone 3GS Black 16GB ------ iPhone 5 Black 32GB ------ 2 iPod Shuffle 1GB

Link al commento
Condividi su altri siti

Ok, adesso (se non sarò sommerso di compiti le prossime settimane) ho ripreso l'obj-c...

Per adesso sono arrivato a un risultato simile: http://imageshack.us...73/87191487.png (il tasto = non fa nulla e in generale non mi piace moltissimo come funzionano i comandi... probabilmente con prossime "versioni" cercherò di programmarlo in un modo migliore...)

Come risultato è sicuramente quasi nullo (voi farete una cosa del genere in tipo mezzo secondo XD), ma per me invece è tanto, perché attiva la voglia di programmare dentro di me XD

Bravissimo, complimenti :) continua così :clap:

 MacBook 7.1 - SanDisk Extreme 120GB SSD - 8GB RAM - OSX Mavericks -  iPhone 5S 32GB -  iPad 4 16GB
[.          ] Patience left: 5%

Link al commento
Condividi su altri siti

Ok, adesso (se non sarò sommerso di compiti le prossime settimane) ho ripreso l'obj-c...

Per adesso sono arrivato a un risultato simile: http://imageshack.us...73/87191487.png (il tasto = non fa nulla e in generale non mi piace moltissimo come funzionano i comandi... probabilmente con prossime "versioni" cercherò di programmarlo in un modo migliore...)

Come risultato è sicuramente quasi nullo (voi farete una cosa del genere in tipo mezzo secondo XD), ma per me invece è tanto, perché attiva la voglia di programmare dentro di me XD

Grande!

Quindi alla fine che libro hai usato?

 MacBook Pro 17" Unibody, Intel Core 2 Duo 2.66GHz 6MB L2 cache, Crucial C300 SSD 256GB, Geforce 9400M + 9600M GT 512MB GDDR3, Crucial 8GB DDR3 RAM @ 1066MHz 

iPhone 4 16 GB - iOS 5.0.1 untether jailbroken with redSn0w 0.9.10 b4

Link al commento
Condividi su altri siti

Ok, adesso (se non sarò sommerso di compiti le prossime settimane) ho ripreso l'obj-c...

Per adesso sono arrivato a un risultato simile: http://imageshack.us...73/87191487.png (il tasto = non fa nulla e in generale non mi piace moltissimo come funzionano i comandi... probabilmente con prossime "versioni" cercherò di programmarlo in un modo migliore...)

Come risultato è sicuramente quasi nullo (voi farete una cosa del genere in tipo mezzo secondo XD), ma per me invece è tanto, perché attiva la voglia di programmare dentro di me XD

La calcolatrice rudimentale è la prima vera app che tutti abbiamo fatto. Non è per niente banale. Continua così. !

Il nostro nome è sritto nella storia B.R.N.

Link al commento
Condividi su altri siti

Grazie :D

Prima di dirti bravo voglio chiederti una cosa: il controllore e la logica sono separati?

Per migliorarla prova a creare una calcolatrice in grado di valutare espressioni matematiche, tipo questa (4+5)*6

Per farlo devi utilizzare un algoritmo ricorsivo e uno stack.

Un Tetris in vecchio stile, dedicato alla versione per Mac degli anni 80.

Link al commento
Condividi su altri siti

La calcolatrice rudimentale è la prima vera app che tutti abbiamo fatto. Non è per niente banale. Continua così. !

Io come primo programma avevo fatto un gioco dei fiammiferi/stuzzicadenti in cui c'era il giocatore e il computer e si toglievano da 1 a 3 per volta, vinceva chi ne lasciava 1 (mi sembra)... ora non ricordo se l'avevamo fatta con il turbo-pascal o addirittura in C.

La calcolatrice poi l'avevo fatta con visual basic... :puking:

Antivirus su mac? No grazie!! Utente Mac dal 10 aprile 2009.

 MacBook air 13, MacBook White 13, Canon Eos 1100D, Nexus5  . Lurker. Tartassala!! ToDo: Tentare di conquistare il mondo!!

Link al commento
Condividi su altri siti

Io come primo programma avevo fatto un gioco dei fiammiferi/stuzzicadenti in cui c'era il giocatore e il computer e si toglievano da 1 a 3 per volta, vinceva chi ne lasciava 1 (mi sembra)... ora non ricordo se l'avevamo fatta con il turbo-pascal o addirittura in C.

La calcolatrice poi l'avevo fatta con visual basic... :puking:

Io invece come prima applicazione con la GUI ho fatto un clone di Prato Fiorito (in C++/Qt, poi "portato" in Cocoa) . E a dire la verità non ho mai fatto una calcolatrice :oops: però la prima app funzionante dà una soddisfazione enorme!

 MacBook 7.1 - SanDisk Extreme 120GB SSD - 8GB RAM - OSX Mavericks -  iPhone 5S 32GB -  iPad 4 16GB
[.          ] Patience left: 5%

Link al commento
Condividi su altri siti

Io invece come prima applicazione con la GUI ho fatto un clone di Prato Fiorito (in C++/Qt, poi "portato" in Cocoa) . E a dire la verità non ho mai fatto una calcolatrice :oops: però la prima app funzionante dà una soddisfazione enorme!

Anche perchè più vai avanti a programmare più capisci che il fatto che funzioni non è sempre così scontato..anzi!!

Antivirus su mac? No grazie!! Utente Mac dal 10 aprile 2009.

 MacBook air 13, MacBook White 13, Canon Eos 1100D, Nexus5  . Lurker. Tartassala!! ToDo: Tentare di conquistare il mondo!!

Link al commento
Condividi su altri siti

Grande!

Quindi alla fine che libro hai usato?

Sto usando quello che avevo già preso :)

Prima di dirti bravo voglio chiederti una cosa: il controllore e la logica sono separati?

Per migliorarla prova a creare una calcolatrice in grado di valutare espressioni matematiche, tipo questa (4+5)*6

Per farlo devi utilizzare un algoritmo ricorsivo e uno stack.

In effetti è qui che sto pensando di farla in un altro modo... (sono ancora legato alla programmazione strutturata e vado in palla facilmente, non sapendo quale è meglio XD)

In pratica per ora ho fatto un oggetto somma, uno sottrazione, ... in cui alla pressione del tasto fanno somma/sottrazione/... del numero attuale con quello precedente (con un numPrec inizializzato a 0 per + e -, e con un numPrec1 inizializzato a 1 per * e /), restituendo il risultato nel textfield e selezionando il contenuto (con selectText).

Però, non so perché, ma non penso sia il modo giusto... quindi ho pensato di farla in modo che alla pressione del tasto cambi semplicemente il valore di una variabile intera (es: la somma lo fa diventare 1, la sottrazione 2, ...) così dopo alla pressione del tasto =, con un if incluso dentro, fa l'operazione in base al numero contenuto nella variabile.

Però non so se siano giusti entrambi, sbagliati entrambi o uno giusto e uno sbagliato... (nell'ottica di programmazione agli oggetti)

iMac 27" ------ Macbook Air 13" ------ iPhone 3GS Black 16GB ------ iPhone 5 Black 32GB ------ 2 iPod Shuffle 1GB

Link al commento
Condividi su altri siti

Sto usando quello che avevo già preso :)

In effetti è qui che sto pensando di farla in un altro modo... (sono ancora legato alla programmazione strutturata e vado in palla facilmente, non sapendo quale è meglio XD)

In pratica per ora ho fatto un oggetto somma, uno sottrazione, ... in cui alla pressione del tasto fanno somma/sottrazione/... del numero attuale con quello precedente (con un numPrec inizializzato a 0 per + e -, e con un numPrec1 inizializzato a 1 per * e /), restituendo il risultato nel textfield e selezionando il contenuto (con selectText).

Però, non so perché, ma non penso sia il modo giusto... quindi ho pensato di farla in modo che alla pressione del tasto cambi semplicemente il valore di una variabile intera (es: la somma lo fa diventare 1, la sottrazione 2, ...) così dopo alla pressione del tasto =, con un if incluso dentro, fa l'operazione in base al numero contenuto nella variabile.

Però non so se siano giusti entrambi, sbagliati entrambi o uno giusto e uno sbagliato... (nell'ottica di programmazione agli oggetti)

L'hai fatto troppo complicato, usa un solo oggetto, all'interno di questo ci metti due NSMutable array, uno lo usi per metterci i numeri e l'altro per metterci gli operatori, tutto deve essere inserito in pila, così peschi un operatore e poi peschi due numeri dall'altro e fai l'operazione che l'operatore ti indica.

Quando premi un tasto in base a quale tasto si tratta chiami sull'oggetto un metodo che passerà l'operatore o l'operando.

Un Tetris in vecchio stile, dedicato alla versione per Mac degli anni 80.

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.


×
×
  • Crea Nuovo...