iOS - MVC teoretiziranje pomoć
(1 korsinik/a gleda/ju temu) (1) Gost

iOS - MVC teoretiziranje pomoć


13.12.2010 | 22:19
Imam jedan problem koji pokušavam riješiti i nikako nisam siguran da li dobro razmišljam i da li dobro shvaćam MVC u cocoa-i. Naime problem je ovakav:
Imam jednostavan primjer MVC-a:
1. ViewController - C
2. Model - M
3. View - V
4. imam jednu dodatnu klasu koja predstavlja SOAP komunikaciju sa .NET SOAP servisom.

View je jednostavan ima par gumba i par tekst fieldov-a koji se pune kao rezultat SOAP poziva. Kontroler upravlja View-em i proslijeđuje action-e na Model. Model prima poruke od Controllera i dobiva svoje podatke iz klase za SOAP komunikaciju i implementira jedan protkol koji zapravo hvata SOAP reponse (NSOperation). Ono što mene muči jest da su servisi asinhroni pa od pojedinog klika na npr. gumb do dobivanja rezultata prođe neko vrijeme. Dok sam razvijao klasu za SOAP i model, prekršio sam pravilo MVC-a i moj model je primao pointer na kontroler i iz implementacije protokola slao poruke na kontroler kako bi se rezultati prikazali u view-u. Sad želim stvari postaviti kako treba i odrediti komunikaciju između M i C. Guglo sam i čitao okolo naokolo i o KVO i o Notifications, ali nikako da odredim što bi u mom slučaju bilo ispravno jer koliko sam skužio i jedno i drugo ima svoje prednosti i mane. Još sam razmišljao da napišem protkol u modelu pa da ga kontroler implementira, ali ni za to nisam siguran da li je to ok. A na kraju sam zabrijao i na GDC (Grand dispatch central) ali to je thredanje pa mislim da sam se izgubio. Od ovih svih razmišljanja sam se lagano pogubio i ne mogu se odrediti koje rješenje bi bilo najoptimalnije za moj projektić. Jel mi netko dati barem smjernice kamo da uopće krenem.
13.12.2010 | 22:32
Jel mi netko dati barem smjernice kamo da uopće krenem.

S obzirom da rješavaš problem callbacka, meni bi prvo palo na pamet delegiranje - SOAP klasa (ako je ona ta koja "čeka" ) proglasi controller svojim delegatom i kad završi to što je čekala, pošalje delegatu poruku da napravi to što već mora napraviti sad kad su podaci spremni. Controller tu poruku pošalje dalje, kome već treba (viewu, npr.).
13.12.2010 | 22:45
To sa delegiranjem sam napravio na način da se model delegira. On čeka da mu SOAP klasa javi rezultat i kako sad iz modela javiti kontroleru da update-a view. Ako delegiram controler onda će kontroler preuzeti ulogu model pa mi moja klasa modela niti ne treba već mi SOAP klasa postaje model što mi se ne sviđa jer je u njoj preko 50 SOAP poziva.
Evo konkretan primjer iz projektića:

1. korisnik klikne gumb Pokreni knjiženja dospjelih računa
2. controler poziva metodu modela - npr. Knjiži
3. model napravi poziv web servisu za knjiženjem, web servis pokreće asinhroni taks na bazi i vraća cookie kao rezultat, model rezultat sprema u svoj property asyncCookie
4. model svakih 5 sekundi zatim poziva web servis (s dobivenim cookiem) za provjeru asinhronih taskova i dobiva trenutni status tog taska i to stavlja u svoj property NSString currentStatus (model.currentStatus)
5. model bi nekako trebao javiti controleru da se property currentStatus promjenio tako da se to osvježi i na view-u. Krajnji status je ili uspješno obavljeno ili greška s opisom. Međustatusi su npr. Knjiženo 50 od 100.

Jel pomogao ovaj primjer?
13.12.2010 | 23:00
Nisam siguran da je pomogao. Zbunjuje me "tko što čeka" dio. Kažeš da model "čeka" SOAP klasu. Kako je točno čeka? Nije li problem u tome što je SOAP klasa zapravo ta koja "čeka" nešto što ne ovisi o tebi (odnosno programu koji pišeš) već o drugoj strani? I ona (SOAP klasa) bi trebala imali callback da javi onome tko ju je pozvao (model) da je obavila posao (ili da je došlo do greške, ili što god već treba javiti). U tom slučaju SOAP klasa ima svog delegata - njen delegat je model. Kad SOAP klasa odradi za model to što mora odraditi, obavit će callback i javiti modelu "evo, tu su ti podaci". Model će ih obraditi i kad završi s njim, javit će SVOM delegatu (a to je controller) da je obavio posao i da su podaci spremni za prikazivanje. Dalje preuzima controller. Controller ne delegiraš jer on, u opisanom slučaju, nikome ne mora javiti nikakvu povratnu informaciju.

Dakle, SOAP klasa ima delegata i njen delegat je model. Model ima svog delegata i njegov delegat je controller. U oba slučaja događa se callback.
13.12.2010 | 23:47
Djipi je napisao:
Nisam siguran da je pomogao. Zbunjuje me "tko što čeka" dio. Kažeš da model "čeka" SOAP klasu. Kako je točno čeka? Nije li problem u tome što je SOAP klasa zapravo ta koja "čeka" nešto što ne ovisi o tebi (odnosno programu koji pišeš) već o drugoj strani? I ona (SOAP klasa) bi trebala imali callback da javi onome tko ju je pozvao (model) da je obavila posao (ili da je došlo do greške, ili što god već treba javiti). U tom slučaju SOAP klasa ima svog delegata - njen delegat je model. Kad SOAP klasa odradi za model to što mora odraditi, obavit će callback i javiti modelu "evo, tu su ti podaci". Model će ih obraditi i kad završi s njim, javit će SVOM delegatu (a to je controller) da je obavio posao i da su podaci spremni za prikazivanje. Dalje preuzima controller. Controller ne delegiraš jer on, u opisanom slučaju, nikome ne mora javiti nikakvu povratnu informaciju.

Dakle, SOAP klasa ima delegata i njen delegat je model. Model ima svog delegata i njegov delegat je controller. U oba slučaja događa se callback.


Dobro si shvatio (SOAP klasa zapravo čeka), moj model je napravljen kao delegat SOAP klase. Znači da napravim da je kontroler delegat modela i preko toga gledam što se promjenilo, ajde probam i to....
Moderatori: Bertone
  • Stranica:
  • 1

Vikalica™

Zadnja poruka: pred 2 dana, 2 sati
  • Borisone: Ma nije to, nego se sada početna stranica učita u tren oka. Treba bar 3-4 sekunde da bi bilo moderno.
  • Riba: Uostalom, nije Jabucnjak neresponsivan nego je vama ekran premalen! :-D
  • dpasaric: I nisi boomer, ti si gen X! :)
  • dpasaric: Zašto bi itko išao na ovaj tip weba s mobitela? :)
  • Riba: Hoce, vec je u pripremi godinama ali je implementacija malo zapela...plus sto ne pomaze sto ja boomer nikada ne idem na jabucnjak sa mobilnog uredjaja. :)
  • CoffeePod: Jabucnjak*
  • CoffeePod: Hoce li Jabuvnjak ikad dobit reponsive sajt?
  • cariblanco: Danas smo u Osijeku, možda shebali turističku sezonu :D
  • dpasaric: Slijedi uskoro osvrt na naslovnici...
  • Air: ...a Applevom slučaju iako te fore drugi telefoni imaju već godinama, ali kad to Apple napravi mi bi se trebali diviti tome kao toploj vodi.
  • Air: Meni Keynote izgleda kao kad Trum hvali samo sebe i svoje odluke kao ono baš najbolje, iako ga je cijeli Svijet popljuvao...
  • drlovric: Na Mac, Spotlight je odlican, kao i boja foldera (konacno) :)
  • drlovric: iPad je odlicno profitirao. Ako sve ovo ne zakljucaju za najnovije modele only :)
  • Riba: Keynote mi je kao neka epizoda Teletubbiesa.
  • Riba: Gledam taj WWDC i razmisljam kako su teme o umiranju mozda privlacnije. :-D
  • dpasaric: Idemo mi na ljepše teme, WWDC je za sat vremena! :)
  • dpasaric: Sve pet, ali nije li zanimljiva statsitika da je od zadnjih 30-ak (toliko pratimo na jednoj internoj grupi objave u medijima) sportaša, umjetnika i ostalih poznaith osoba koje su iznenada umrle, uzorak cijepljenih 100%. A znamo da je kod nas situacija bila cca 50:50, znači nešto lomi statistiku. Evo, samo to primjećujem.
  • smayoo: To što nije u javnosti poznato što je prethodilo njegovoj smrti, ne znači da nije prethodilo ništa čega bi ta smrt bila logičan i sasvim vjerojatan ishod. Moj pokojni stari je umro u 59. godini i svima koji ga nisu jako dobro znali je to bilo "iznenada". Nas koji smo mu bili bliski nije baš *iznenadilo*, iako nam je bilo teško i bolno.
  • Riba: Obrati paznju na nepoznate osobe poput mog oca koji ne uzima lijekove kako je propisano, odbija ici na kontrole, jedva je izvukao zivu glavu nakon srcanog udara pred par godina i jos hoda naokoo unatoc tome sto se cak i cijepio. Znanost bi se trebala na takve slucajeve usredotociti. :)
  • dpasaric: Samo primjećujem uzorak. Do sada je 100% kod domaćih i stranih poznatih osoba koje su iznenada umrle. Ponavljam, možda je zaista slučajnost, ali sada već postaje statistički zanimljivo.
  • Riba: Covjek je vjerojatno pocinio suicid ili izravno ili neizravno alkoholom, nije tu potrebna velika znanost.
  • dpasaric: Sjajan umjetnik je to bio. Velika šteta.:( I gle, opet moramo primjetiti slučajnost koja povezuje sve "prerano" umrle. :( Nadam se da će znanost potražiti uzroke takvoj statistici.
  • smayoo: RIP, Matija :(. Stvarno prerano.
  • dpasaric: Večeras u 19 sati po našem vremenu Appleov #WWDC25 keynote!
  • Maxxy: RIP Matija Dedić :(
  • smayoo: RIP :(
  • dpasaric: Umro Bill Atkinson! :(
  • drpongrac23: @Zdravac - Nemoj ići lijevo ako semafor je desno :) :)
  • Zdravac: hahahah
  • Zdravac: A da se, umjesto palac dolje/gore, uvede palac lijevo/desno?!
  • tino1: Gjuro, bola, Mazlum i to s veliko "M".
  • Gjuroo: Možda "mamlaz"?
  • tino1: Mazlum- na Herceg- Bolansanski- Budala.
  • Yonkis: Mazlum - Mazlum (maẓlūm) is an Arabic term for "oppressed, ill-treated, injured, sinned-against" (the antonym being ẓālim "oppressor"; root ẓlm "to oppress";).
  • tino1: Riba! Vraćaj karmu! Ej ne ćeš se imat kamo vratit.
  • tino1: Ej ukinuo Mazlum Karmu!! Šta vam je odmah vraćaj karmu Riba!!
  • smayoo: :(
  • drpongrac23: Napustio nas je Ivan Piko Stančić. RIP
  • Borisone: Logika kaže da bi verzija trebala biti od godine u kojoj se izdaje. Ima smisla godina plus jedan jer u posljednjih nekoliko godina obećanja dolaze s bar nekoliko mjeseci odmaka (ili nikad).
  • Yonkis: iOS 26 u 2025? [link]
  • cariblanco: Riječani, hoće li Važ biti vaš ?
  • smayoo: @Yonkis, piši u forum, ovo će ti tu iscuriti
  • Yonkis: Članak je odličan.. dijelim ga okolo ostalim Appleovcima koji nikako da ovdje puste korjenje. :)
  • hal9000: @dpasaric: ako nekome i nije korisno, barem je zabavno i poučno.
  • Yonkis: Ne znam dal da otvaram temu, treba mi prijedlog neke app za skeniranje prostorije (sa namještajem) kako bih mogao lakše namjestiti prostoriju sa postojećim stanjem, neka LiDAR app?
  • dpasaric: Članak je "up", imate što za čitati, nadam se da će nekome biti korisno! :)
  • cariblanco: ok,ty za info
  • dpasaric: Ograničen je taj modul za ankete, imao sam isti problem, ali on nakon par dana zaboravi IP, pa se mogao dati drugi glas za one koji su imali više Macova.
  • dpasaric: Hvala, idem urediti tekst za zadnjim info, pa ide objava večeras! :)
  • dpasaric: Evo, imamo 1.000!

Za vikanje moraš biti prijavljen.

Prijava

Prisutni jabučari

Riba, rusty, tino1, Anonimci (423)

Novo na Jabučnjaku

Teme

Poruke

Oglasi

Komentari

Anketa

Koji Mac koristite?

Page Speed 0.98 Seconds

Provided by iJoomla SEO