< 1 2 3 > 
2 of 3
Početnička pitanja
Posted: 15 November 2010 03:06 PM   [ # 16 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  443
Joined  2005-05-16

ivan90bg wrote:

Jel to znač da ako napravim neki moj objekat koji je podklasa NSView-a (u IB-u mu napravim izgled) i stavim ga za promenljivu u objektu koji predstavlja stavku tabele - taj moj specijalni View će i biti prikazan u stavki NSTableView-a.

Ne. NSTableView se sastoji od ćelija (NSCells i naslednici) i samo to može da prikaže. Dakle, svaki NSView koji ima i svoju NSCell reprezentaciju (NSTextField -> NSTextFieldCell, NSButton -> NSButtonCell, NSLevelIndicator -> NSLevelIndocatorCell, NSSlider -> NSSliderCell, ima ih još) može automatski da se prikaže u okviru NSTableView-a. Tada takođe moraš i da podesiš tip ćelije (tzv. dataCell) u odgovarajućem delegate metodu, ili u IB-u. Ako hoćeš baš svoj custom view kao element NSTableView-a, moraš da praviš svog NSCell naslednika, predefinišeš (override) metod -[NSCell drawInteriorWithFrame:inView:] ili -[NSCell drawWithFrame:inView:] i iskoristiš ga da ubaciš svoj custom view kao subview glavnog view-a. Ne verujem da ti je baš to potrebno, ali kao jeste reci, pa ću da probam da bacim osnovni kod (kao smernicu za dalje igranje).

Hajde objasni šta predstavljaju ti objekti, čja će se svojstva prikazivati u okviru tabele, da znam konkretno o čemu se radi. Moguće da uopšte ne moraš da definišeš dva objekta, nego vraćaš isti objekat za više različtih redova tabele.

Profile
 
Posted: 15 November 2010 06:10 PM   [ # 17 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  4275
Joined  2006-09-18

Dobri ste, kao na kineskom da pričate :D

&#36825;&#19968;&#22825;&#26159;&#32654;&#20029;&#30340;,&#40479;&#20799;&#22312;&#27468;&#21809;&#12290;

[img size=600]http://chinesemedias.com/gallery/Chinese%20Art/Bird%20on%20Branch.jpg[/img]

Profile
 
Posted: 15 November 2010 07:27 PM   [ # 18 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  189
Joined  2009-12-15

@milke: jel imaš neki Messanger ili Skype nalog? Bolje nego preko foruma.

Post edited by: ivan90bg, at: 2010/11/15 19:27

Profile
 
Posted: 15 November 2010 09:20 PM   [ # 19 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  7597
Joined  2005-04-28

ivan90bg wrote:

@milke: jel imaš neki Messanger ili Skype nalog? Bolje nego preko foruma.

Ti bi one-on-one trening iliti obuku? E, to košta. B)

Šalim se, nemojte da se ‘sklanjate’, meni je interesantno da ovo čtam.

 Signature 

ACSP 10.10 - ACSP 10.9 - ACA 10.8 Mac Management - ACSP 10.8 -  ACSP 10.7 - ACSA 10.6

Profile
 
Posted: 15 November 2010 10:10 PM   [ # 20 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  259
Joined  2010-07-21

Ja bih rado rekao jos koju, ali, da parafraziram, posle milketa se ne govori :D

 Signature 

Eager to learn

Profile
 
Posted: 16 November 2010 12:22 AM   [ # 21 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  189
Joined  2009-12-15

@Miki, evo otkriću sve o ovom zadatku za faks samo zato što si se ti zainteresovao. 😉

Razmišljam da napravim program koji će da prikazuje rad CPU-a, to jest postupak obrade instrukcija. (jes da će to svi prijavljeni za projektni zadatak da naprave ali samo ja pravim na Mac-u B) i oću da aplikacija bude mint).

Program neće prikazivati niti će u pozadini raditi sa binarnim brojevima ili na binarnoj bazi obrađivati instrukcije. Sve će biti zasnovano na običnim brojevima, stringovima, boolshit-ovima… :whistle:

Prva stavka za sada je kako predstaviti sadržaj RAM memorije u GUI-u. RAM se kao što znate sastoji od adresiranih bajtova. Svaka stavka liste NSTableView-a bi predstavljala jedan bajt memorije. Ako se na nekoj adresi nalazi, recimo 32-bitan broj, jednostavno bi mogao da se prikaže tako da je cela vrednost ispisana u redu koji sibolizuje tu adresu, dok bi u ostala tri reda ispod (jer su 32 bita = 4 bajta) bilo napisano to isto samo tekstom sive boje (i možda iskošenim ili sa umanjnom veličnom).

Ili bi možda lepše bilo da debljina tih dodatnih stavki ispod glavne bude umanjena da bi se dobilo na gistini glavnih stavki na celoj listi.

Svaka stavka liste će naravno biti neki objekat u NSMutableArray promenljivoj nekog objekta koji će da predstavlja RAM. Neki drugi objekat će da predstavlja CPU sa registrima, flagovima…

A dal bi bilo OK da uopšte ne koristim te objekte koji samo stoje radi kozmetike nego da se objekti koji predstavljaju unose u memoriji (instrukcije, brojeve) samo idu jedan za drugim, a da prva kolona tabele bude memorijska adresa. Ako bih uzeop da su mi instrukcije 32 bita dugaćke onda bi svaka sledeća adresu veću za 4.

E sad ako u nekoj instrukciji stoji memorijska adresa nekog broja koji treba da se LOAD-uje u registar kako ja mogu da nađem objekat u NSMutableArray-u koji ima tu vrednost za svoju adresu. Ne bih mogao da upotrebljavam indekse niza. Možda bih mogao negde da držim neki NSDictionary (ili nešto prikladno) u koji bi kako se lista popunjava upisivao stvarne indekse objekata koji se kreiraju pridružene ‘memorijskim adresama’ tih objekata. Pa onda tu referencu koristim da resolve-ujem indekse objekata na koje se odnose memorijske adresu u instrukcijama.


U sunce ti kako zborim ovaj opskurni programerski jezik. Miki šta kažeš. 😛

Profile
 
Posted: 16 November 2010 08:39 AM   [ # 22 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  7597
Joined  2005-04-28

ivan90bg wrote:

E sad ako u nekoj instrukciji stoji memorijska adresa nekog broja koji treba da se LOAD-uje u registar kako ja mogu da nađem objekat u NSMutableArray-u koji ima tu vrednost za svoju adresu. Ne bih mogao da upotrebljavam indekse niza. Možda bih mogao negde da držim neki NSDictionary (ili nešto prikladno) u koji bi kako se lista popunjava upisivao stvarne indekse objekata koji se kreiraju pridružene ‘memorijskim adresama’ tih objekata. Pa onda tu referencu koristim da resolve-ujem indekse objekata na koje se odnose memorijske adresu u instrukcijama.

Ne znam da li je NSDictionary to, ali bih ja to rešio sa dva paralelna niza: nizom objekata i nizom ofseta od početne memorijske adrese na kojima ‘počnje’ objekat. Onda uvek možeš da nađeš koji objekat pokriva koju adresu, ili osmi objekat od objekta koji je pokrio ovu adresu i slične egzibicije.

Jes’ da ne znam ObjC i Cocoa, dajem ti još jedan savet, nevezano od konkretnog problema, ali mi se iz poruke čni da upadaš u zamku u koju najčešće ‘mladci’ upadaju, da ne kažem ‘mladunci’:

1) Prvo reši problem bez razmišljanja i pogotovo oslanjanja na to u kojem ćeš jeziku/alatu problem da rešavaš (razmišaljanja tipa ‘da bih ovo implementirao, koristiću tu i tu klasu pa ću onda tu i tu funkciju te klase’)

2) O interfejsu i načnu komunikacije razmišljaj na kraju, jer i to u suštini odmah znač ‘koristiću ovu klasu’ i takođe ne dozvoli da to utiče na rešavanje problema iz 1)

Post edited by: madamov, at: 2010/11/16 08:40

 Signature 

ACSP 10.10 - ACSP 10.9 - ACA 10.8 Mac Management - ACSP 10.8 -  ACSP 10.7 - ACSA 10.6

Profile
 
Posted: 16 November 2010 10:37 AM   [ # 23 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  189
Joined  2009-12-15

E, pa da li ja mogu da dodajem nove objekte u NSMutableArray na proizvoljne indekse bez obzira da li na indeksima između indeksa novog objekta i indeksa prethodnog ima ikakvih objekata.

Postoji metoda -insertObject:atIndex:. Da li sa njom mogu da ubacujem objekte na proizvoljan nepostojeći indeks? Ako može to rešava sve.

@madamov: Pa kako ću to kad osim Cocoa/Objective-C nisam istraživao ni jedan OO jezik ni framework pa da znam šta im je zajedničko i da smišljam univrzalna rešenja. Meni je trenutno u glavi samo Cocoa.

Post edited by: ivan90bg, at: 2010/11/16 11:13

Profile
 
Posted: 16 November 2010 11:54 AM   [ # 24 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  7597
Joined  2005-04-28

ivan90bg wrote:

@madamov: Pa kako ću to kad osim Cocoa/Objective-C nisam istraživao ni jedan OO jezik ni framework pa da znam šta im je zajedničko i da smišljam univrzalna rešenja. Meni je trenutno u glavi samo Cocoa.

Ne moraš da znaš nijedan OO jezik niti frejmvork (ja to i dalje zovem bibliotekama B) ) da bi razmišljao na OO načn i rešavao probleme korišćenjem OO metoda. No, da ne širim priču i ne smetam, ovo ipak jeste tema o ObjC-u.

 Signature 

ACSP 10.10 - ACSP 10.9 - ACA 10.8 Mac Management - ACSP 10.8 -  ACSP 10.7 - ACSA 10.6

Profile
 
Posted: 16 November 2010 01:40 PM   [ # 25 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  259
Joined  2010-07-21

ivan90bg wrote:

E, pa da li ja mogu da dodajem nove objekte u NSMutableArray na proizvoljne indekse bez obzira da li na indeksima između indeksa novog objekta i indeksa prethodnog ima ikakvih objekata.

Postoji metoda -insertObject:atIndex:. Da li sa njom mogu da ubacujem objekte na proizvoljan nepostojeći indeks? Ako može to rešava sve.

U svakom slucaju pogledaj sta dokumentacija kaze za insertObjectAt…

Cini mi se da si(smo) ga nepotrebno zakomplikovali. Zar ne treba samo da pri ubacivanju ‘glavnog’ elementa ubacis jos tri ‘lazna’, a sam generises redne brojeve koji predstavljaju jedan property objekta, tj. kolonu, a imas dodatan property koji ti sluzi da uradis nacin iscrtavanja u samoj celiji? U svakom slucaju u odgovarajucim datasource i delegate metodama mozes da se zezas sa pomeranjem indeksa, ofsetima itd. Posto imas pravilo za ubacivanje, imas i za reverzni postupak, odn. citanje.

 Signature 

Eager to learn

Profile
 
Posted: 16 November 2010 03:32 PM   [ # 26 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  189
Joined  2009-12-15

Pogledao sam, u NSMutableArray ne mogu da se dodaju objekti na idekse za 2 ili više veće od indeksa poslednjeg objekta. Znač u nizu moraju da postoje svi objekti od indeksa 0 do n, nema praznina.

Moraću onda da pravim više vrsta objekata za memoriju.

Sad jedno pitanje. Pošto ću imati neke objekte od kojih će mi biti potrebna samo jedna instanca tokom izvršavanja programa, jel OK da ih ubacim u NIB fajl, a da ih ne instanciram u kodu.

Profile
 
Posted: 17 November 2010 01:05 PM   [ # 27 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  260
Joined  2007-09-07

ivan90bg wrote:

Pogledao sam, u NSMutableArray ne mogu da se dodaju objekti na idekse za 2 ili više veće od indeksa poslednjeg objekta. Znač u nizu moraju da postoje svi objekti od indeksa 0 do n, nema praznina.

Moraću onda da pravim više vrsta objekata za memoriju.

Sad jedno pitanje. Pošto ću imati neke objekte od kojih će mi biti potrebna samo jedna instanca tokom izvršavanja programa, jel OK da ih ubacim u NIB fajl, a da ih ne instanciram u kodu.

Ako nemaš puno ‘šupljina’ i ako niz nije veliki onda možeš rupe da popuniš sa NSNull.

Sad jedan odgovor 😊 Sasvim je OK da ih ubaciš u nib fajl.

 Signature 

iMac 27-inch

Profile
 
Posted: 10 April 2011 08:48 PM   [ # 28 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  189
Joined  2009-12-15

Evo mene opet.

Imam jedan vrlo nerazumljiv problem i nisam siguran da li ima neke veze sa cocoa frameworkom (ali ipak)

Napravio sam rudimentarni space invaders.

Heroj i vanzemaljci su samo crveni kvadrati. Ne koristim nikakve objekte sva logika se nalazi u jednoj metodi podklase NSView-a koju poziva NSTimer (pretpostavljate više puta u sekundi, a konkretno 25). Tu se proverava kolizija vanzemaljaca sa projektilom kao i to da li su svi vanzemaljci eliminisani (postojanje svakog od 8 njih je zapamćeno kao 1 od 8 bitova u jednom unsigned char-u :silly:) i upisuju se podaci u razne promenljive, na osnovu kojih se view iscrtava.

Sve to radi, projektil lepo pogađa i eliminiše četvrtastu gamad, ali nešto zanimljivo se dešava na kraju.

Kada se dođe do trenutka kada projektil treba da pogodi poslednji kvadrat nekad to prođe bez problema i igra se prekida (timer se invalidira); a nekad u trenutku kad projektil samo što nije pogodio poslednji (kada je 5 pikasela od njega) program popije EXC_BAD_ACCESS signal. Moguće da ne stigne da iscrta poslednji ‘frejm’ i dobije signal.

Šta mislite. Gde je zec. Jel moguće da se desi da se invalidate pozove na nepostojećem tajmeru. Ti pozivi se nalaze u metodi koju tajmer poziva a zajedno sa njima se i podešava jedna pomenljiva na vrednost koja sprečava da se ta metoda i izvrši, i opet signal.

Jel ima možda neke veze sa multitheading-om tajmera.

Profile
 
Posted: 11 April 2011 10:30 AM   [ # 29 ]
Sr. Member
RankRankRankRank
Total Posts:  109
Joined  2008-04-05

Imas heroje i vanzemaljce, ali ti fale zombiji da bi se resio problema 😊

Ovo je najcesce greska kada uradis over release nekog objekta. Ili na srpskom, pokusavas da pristupis objektu koji vise ne postoji.

Najlaksi nacin da se izboris sa ovim problemom je da koristis NSZombieEnabled da bi locirao problem.

Pogledaj ovaj link, tu imas objasnjenje kako da aktivirsas ovu opciju:
http://stackoverflow.com/questions/2190227/how-do-i-set-nszombieenabled-in-xcode-4

Post edited by: mperovic, at: 2011/04/11 10:39

Profile
 
Posted: 11 April 2011 11:05 AM   [ # 30 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  189
Joined  2009-12-15

To, fala ti puno.

Uključo sam zobije i odma vido da se tajmeru šalje release kad je već dealociran.

E sad sledi guljenje debagera.

Mada na mestu gde se poziva relese tajmera sa stavio i timer = nil;

Nikako mi nije jasno kako dolazi do još jednog poziva release.

Ali videću već šta se dešava.


EDIT: Nađen problem. Nisam trebao uopšte da pozivam relese tajmera. Dobio sam ga pozivom +[NSTimer schedule…] što znač da ga ja ne posedujem i nisam smeo da pozivam release. Plus još jedna veća greška, čak i da sam posedovao tajmer nisam smeo da pozivam release unutar metode koju sam tajmer poziva posle invalidate poziva jer će to značti da se tajmer briše pre nego što je izvršio svoju metodu za koju ne znam šta radi posle poziva moje.

Post edited by: ivan90bg, at: 2011/04/11 11:32

Profile
 
 < 1 2 3 > 
2 of 3