Vai al contenuto

Consigli Obj-c


Messaggi raccomandati

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.

Ok, grazie! :)

Penso di aver capito... Ora provo a farlo e vediamo se viene fuori qualcosa 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

  • Risposte 62
  • Creato
  • Ultima Risposta

Pensando di riuscirci, provandoci ho capito che non ce la faccio... XD

Con il libro gli array mutabili li ho usati (per adesso) solo con stringhe, e non so come passargli un double... ho provato a cercare in Xcode qualcosa come "add..." o simili, ma non ho trovato nulla di utile...

Mi sa che per farla come mi hai suggerito dovrò aspettare un po' di tempo in più... ;)

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

Link al commento
Condividi su altri siti

Pensando di riuscirci, provandoci ho capito che non ce la faccio... XD

Con il libro gli array mutabili li ho usati (per adesso) solo con stringhe, e non so come passargli un double... ho provato a cercare in Xcode qualcosa come "add..." o simili, ma non ho trovato nulla di utile...

Mi sa che per farla come mi hai suggerito dovrò aspettare un po' di tempo in più... ;)

Certo che puoi invece, un NSArray riceve oggetti, i double non sono oggetti quindi per passargli un double devi usare questo metodo:

+ (NSNumber *)numberWithDouble:(double)value

Ricordati che l'array va usato come una pila, quindi dovrai usare addObject e removeLastObject per utilizzarla correttamente, quando l'utente clicca sul segno '=' fai partire un metodo che prende l'operatore dalla pila degli operatori, prende i due operandi dalla pila degli operandi, ed effettua l'operazione in base all'operatore pescato.

PS In questo modo però le priorità degli operatori non sono rispettate, volendo si può farle rispettare ma prima prova così, se proprio no ci riesci metterò un po' di codice.

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

Link al commento
Condividi su altri siti

Ah, grazie, non lo sapevo :D

(È una specie di operatore di cast?)

Non proprio, il casting serve a cambiare i tipi primitivi, questo serve a trasformare un tipo primitivo in un oggetto, questa tecnica si chiama boxing (inscatolamento), quando dovrai fare le operazioni andrà ritrasformarlo in un tipo primitivo attraverso un altro metodo getDoubleValue o qualcosa del genere.

In Java il boxing e deboxing avvengono automaticamente.

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

Link al commento
Condividi su altri siti

Allora, ho provato a fare come mi hai detto, ma (probabilmente sarò duro io...) non mi veniva...

Quindi ho pensato di farlo più o meno come mi hai detto, però al posto dell'NSMutableArray ho usato 3 variabili double per i numeri (num1, num2 e numAtt) e 2 variabili char per l'operatore (operatore1, operatoreAtt, inizializzate a 'o').

Così quando premo un segno l'operatoreAtt prende l'operatore del segno in cui è, e poi con [self calcola] faccio fare i calcoli al metodo calcola, che consistono in 4 if (per vedere l'operatore) dentro ognuno dei quali c'è l'operazione diversa, e infine assegna all'operatore1 l'operatoreAtt, e a quello Att assegna 'o' (con 'o' non fa nessuna operazione) e porta il risultato (che è contenuto in num1) nel TextField e lo seleziona di nuovo :)

L'ho provato e funziona, sicuramente è molto meglio di prima (almeno il tasto '=' serve a qualcosa, e funziona meglio in generale)

EDIT: Ho anche appena aggiunto il tasto DEL, che azzera gli operatori a 'o' e i numeri a 0 :)

74522692.png

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

Link al commento
Condividi su altri siti

Aggiunto il quadrato, mentre la radice ho solo aggiunto il tasto e il metodo, ma devo pensare a come farla (il quadrato è facile, ma la radice no...)

23480335.png

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

Link al commento
Condividi su altri siti

Che c'è di difficile nella radice? Non ti vorrai mica implementare l'algoritmo?

 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

Che c'è di difficile nella radice? Non ti vorrai mica implementare l'algoritmo?

Beh, pensavo di andare a ripescarmi l'algoritmo di Newton che avevo fatto in C, ma da come hai scritto penso di aver capito che esista un metodo che la calcola... 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

..si..l'unica cosa a cui devi prestare attenzione è l'approssimazione, come vuoi farla se vuoi farla.

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

Beh, pensavo di andare a ripescarmi l'algoritmo di Newton che avevo fatto in C, ma da come hai scritto penso di aver capito che esista un metodo che la calcola... XD

se vuoi ripescare l'algoritmo fallo pure ma in C esiste già la funzione sqrt(double a), puoi anche mettere le funzione per la trigonometria anche queste presenti in C.

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

Link al commento
Condividi su altri siti

  • 2 mesi dopo...

Tra 1, massimo 2 mesi, il profe di info ci spiega il C++ e i linguaggi OOP (forse anche Java, ma non so se quest'anno o il prossimo)

Chissà se potrà essermi utile... anche se pensi che qualcosa sull'OOP l'ho capito

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

Link al commento
Condividi su altri siti

Tra 1, massimo 2 mesi, il profe di info ci spiega il C++ e i linguaggi OOP (forse anche Java, ma non so se quest'anno o il prossimo)

Chissà se potrà essermi utile... anche se pensi che qualcosa sull'OOP l'ho capito

Il C++ è sempre utile!

 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

Tra 1, massimo 2 mesi, il profe di info ci spiega il C++ e i linguaggi OOP (forse anche Java, ma non so se quest'anno o il prossimo)

Chissà se potrà essermi utile... anche se pensi che qualcosa sull'OOP l'ho capito

Non confonderlo con il C, sono due linguaggi diversi.

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

Link al commento
Condividi su altri siti

lo so, ma visto che lo stavi imparando per conto tuo ho voluto avvisarti.

No no, il C ce lo ha insegnato il profe ;) (che comunque dovremmo finirlo, o almeno secondo il programma, in queste settimane :))

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...

per le base dell'Objective-C e della programmazione multithreading in ambiente Apple esiste questo testo di ben 848 pagine.

http://www.objective-c.it

Ah ma che fine hanno fatto i manuali con i contro-cosiddetti? :rolleyes: quando mi son messo in testa di imparare il Qt/C++ mi sono mangiato 4 manuali, il C, il C++, OpenGL e, ovviamente, Qt, tutti da circa 1300-1400 pagine l'uno... quelli sì che ti "imparano" bene :rolleyes:

 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 dopo mesi e mesi di ricerca ancora non ho trovato un buon manuale di Obj-C che ti spieghi sia pratica che teoria

Macbook White Late 2010 | iPhone 4 16 gb | iPad 2 Wifi 16 gb | iPod Touch 3g 8gb | iPod Nano 2g 8gb

"Because The People Who Are Crazy Enough To Think They Can Change The World Are The Ones Who Do"

Link al commento
Condividi su altri siti

  • 3 settimane dopo...

Ho provato a fare un "giochino". In pratica il numero che c'è vicino a START è il numero che bisogna premere con i 4 tasti sotto. Se si preme quello giusto il punteggio viene incrementato di 1, altrimenti viene decrementato di 1. La partita dura 10 secondi (tanto per provare...) e ogni 2 secondi (si calcolano 2 secondi o se non hai premuto nulla per 2 secondi, o se hai indovinato un tasto) viene creato casualmente un nuovo numero da 1 a 4 (ho usato la rand())

86401209.png

L'ho fatto con una classe chiamata Pulsanti (non sapevo che nome dargli XD)che ha 4 metodi per ciascun bottone (ma vorrei mettere questi 4 metodi in 1, solo che non mi ricordo come creare un NSButton per avere poi il suo ID da codice), 1 per incrementare il punteggio, 1 per decrementarlo, uno per generare il numero, uno per il timer (che purtroppo queste 4 righe le ho dovute cercare in internet, visto che non so come fare più operazioni contemporaneamente ancora...) e un metodo per iniziare (che fa partire il timer e genera il primo numero casuale) :)

P.S: Tra poco dovrei iniziare Nim (un gioco matematico che abbiamo visto su wikipedia) con un mio amico, solo che io penserò alla versione OSX (in Objective-C) mentre lui alla versione Linux/Windows (vediamo quale dei due, comunque in Java o C++). Vedremo cosa ne uscirà fuori (sempre che ne esca qualcosa 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

Sapete come far apparire un'altra finestra?

Perché so chiuderla (con [nomeFinestra close]), ma non riesco proprio ad aprirne nemmeno una...

Ho guardato un po' in internet e non ho capito molto, se non che devo usare NSWindowController, giusto?

Avete un consiglio?

P.S: Mi da questo errore: "failed to load window nib file"

P.P.S: Risolto l'errore... in pratica sbagliavo a scrivere il nib name del file 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

  • 2 settimane dopo...

Ho appena finito la prima versione di Gioco Nim :D

L'ho fatta in Obj-C, ma un mio amico (il progetto l'abbiamo ideato insieme) l'ha anche fatta in Java che ovviamente gira anche su Mac.

Comunque qui ho messo il download (https://dl.dropbox.com/u/62800090/giocoNim.zip), ma non sono sicuro di aver fatto l'esportazione in modo corretto...

Se potete dirmi se funziona o no mi fareste un piacere :) (perché provando a esportare un certo file (non mi viene in mente il nome) mi diceva che non potevo perché non ho la firma per le app, quindi ho provato ad esportare l'applicazione senza la firma)

P.S: Non è possibile ottenere una firma? Se non ricordo male ce ne dovrebbe essere una d'argento o simile, ma non vorrei dire stupidaggini

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

Link al commento
Condividi su altri siti

funziona, ci sono due label dove inserire numeri e questi eliminano dei rettangoli neri.

Grazie di averlo provato, almeno so che è il modo corretto di esportare :)

Comunque si, effettivamente per adesso non è molto "interattivo", perché alla fine (escludendo il menù in cui inserisci le configurazioni) sono 2 textfield con altrettante label, ma sto provando ad eliminare i comandi da tastiera e metterci solo gli input del mouse (quindi elimini i quadrati col mouse non più con i textfield) e sono più o meno ad un buon punto (riesco a riconoscere dove è avvenuto il click del pulsante e a cancellare i rettangoli selezionati col mouse)

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

Link al commento
Condividi su altri siti

  • 2 mesi dopo...

Alla fine come manuale è utile. Non l'ho ancora finito (mi mancheranno circa 70 pagine), ma generalmente è fatto bene.

Si concentra tantissimo sulle NSTableView, ma penso che il suo scopo sia solo far conoscere varie strutture differenti...

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

Link al commento
Condividi su altri siti

Se vuoi il mio consiglio segui un corso con un docente. Non cito nessuno in particolare xchè non so se è consentito dal regolamento del forum, cmq se cerchi trovi sicuramente. Ovviamente è una spesa diversa dall'acquistare un paio di libri, ma anche il risultato è differente. 

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

Link al commento
Condividi su altri siti

Se vuoi il mio consiglio segui un corso con un docente. Non cito nessuno in particolare xchè non so se è consentito dal regolamento del forum, cmq se cerchi trovi sicuramente. Ovviamente è una spesa diversa dall'acquistare un paio di libri, ma anche il risultato è differente.

Che il risultato sia differente non lo metto in dubbio (senza un profe probabilmente non saprei nemmeno cosa significa programmare), ma per adesso voglio limitarsi massimo all'acquisto di libri visto che non so ancora cosa farò più avanti :)

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

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.


×
×
  • Crea Nuovo...