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 1 dan, 6 sati
  • CoffeePod: Nadam se da će me služit sljedećih 10 godina ????
  • CoffeePod: Koja sreća da sam prošle godine za 2.900 uzeo MBP 16 48GB RAM 1TB
  • dpasaric: Nema, možda nešto sitno što je lokalno na lageru.
  • zvone: Mislim da u istylwu imaju jos stare cijene. Ili?
  • dpasaric: Klijent jučer poželio kupiti jedan solidan MacBook Pro 16", cijena nešto iznad 3.000 € PDV. Što mislite koliko je nakon poskupljenja radne memorije? 3.500 € PDV... veselo...
  • dpasaric: Hardver koji mi je trebao doći na review nažalost kasni! Nadam se da će uskoro! :)
  • Pongy75: @smayoo - Victoria!!!
  • smayoo: MX Master FTW! :)
  • zoranowsky: Od mene isto glas za MX master
  • Pongy75: Palac gore za Logitech MX Master! Od Magic mouse zabolinruka nakon duljeg rada.
  • Tito: MAgic mouse - najbolji mis ikada!!!
  • drlovric: @super. Zaobidji ga u sirokom luku. Bolje kupi za te pare Logitech MX Master :)
  • jura22: Rubno? Nije upotrebljiv osim kao ukras na stolu. Imao dva, jednog prodao a drugog poklonio kupcu mog MBP.
  • dpasaric: Magic Mouse - lijep, ali rubno upotrebljiv! :)
  • superstric: ako netko treba, apple magic mouse 63,01 euro na amazon prime day
  • dpasaric: :)
  • smayoo: Čestitam svima Dan antifašističke borbe!
  • drlovric: Za nekih tjedan dana moj Macbook Pro M1 Pro 16" ide na prodaju. Ako nekoga zanima takvo racunalo (us layout, 16gb ram) neka se javi za dogovor.
  • dpasaric: Možda je to bio Belonguzije - androdi kojeg je predstavio LET 3 u Pikiju jednom davno... istina, imao je dosta ograničen rječnik... :)
  • accom: Evo, čitam o zidiću i gledam Baltazara... jel to bila prva AI mašina na svijetu?
  • dpasaric: To se i meni dogodilo par puta, uvijek prije objave napravim barem copy u buffer, a često ako je nešto kompleksnije, samo paste u TextEdit, just in case.
  • Yonkis: I pretraga je beskorisna, zato sam pisao novu temu jer mi je trebalo manje vremena da ju natipkam i dodam screenshotove nego da češljam rezultate pretrage.
  • Yonkis: Jedem ti jabucnjak, napišem novu temu i nisam odabrao Forum i sve mi izbriše kad sam kliknuo PROVJERI. Odsutajem, 20 min tipkanja otišlo u vjetar. Nikakav alert ili nešto da iskoči da me upozori.
  • ZeljkoB: Zaba na dev beti radi bez greske
  • dpasaric: Vidio sam neke na Twitteru da su stavili dev betu, ali nisu ovdje.
  • mbp2009: ne vidim neke konkretne info na netu za to
  • mbp2009: Ne znam odakle ove diskusije poticu, ali da vidim, ima li koga na dev beti ios? Pogotovo ovaj dio me zanima za PBZ i poslovnu PBZ, ako radi
  • dpasaric: Čekam da mi dođe jedan zanimljiv komad hardvera, pa ću finalizirati velik pregled monitora koji će mnogima biti koristan!
  • dpasaric: "Your request has been processed"
  • Ender: takodje i ja molim admina da obrise i moj korisnicki nalog. ostavljam mogucnost da se kasnije opet prijavim kad i ako se neke stvari promene. pozzz i svako dobro.
  • dpasaric: @Air U redu, razumio sam. Hvala ti na svemu onom pozitivnom, ono drugo će srediti vrijeme.
  • jura22: Vrijeđaj partizane i Tita pa da vidiš.
  • Air: Ako si razumio onda napravi to, a ne da moram pisali litanije za jednostavan zahtjev.
  • dpasaric: Air, naravno da je dovoljno, ako to želiš mogu i ja odmah, ali hej, jutro je pametnije od večeri, prespavaj, pa javi, najmanji je problem kliknuti na delete.
  • Air: Zanimljiv vam je latinski. Uživajte. Između vaših upisa napišite što je potrebno da zatvorim račun na Jabučnjaku ako nije očigledno dovoljno razumljivo ovo što sam napisao na vikalici.
  • smayoo: Canis mater studiorum. Stara studentska. :D
  • dpasaric: @Gjuroo: Per aspera ad astra!
  • Gjuroo: @Air: Illegitimi non carborundum.
  • dpasaric: Chill out i vidjet ćeš kako će ovo sada biti ugodnije, korisnije i pozitivnije mjesto za sve korisnike.
  • dpasaric: Joj ne drami.
  • Air: Molim odgovornu osobu da obriše Air račun.
  • Air: U ovim novim okolnostima transparentnog licemjerstva pojedinca podvlačim crtu. Ja nemam želudac za trpiti to da mi jedan licemjer briše čiste postove samo zato što on ima problem u svojoj glavi. Kako je tino1 rekao bilo mi je zadovoljstvo dolaziti na Jabučnjak radi ljudi. Ovim putem pozdravljam sve dobre ljude Jabučnjaka i HVALA vam! Nakon ovog upisa brišem svoj račun.
  • dpasaric: Sve što je sada obrisano u "kafanskim laprdanjima" je bilo u dogovoru s Djurom, počistili samo za sobom i tko hoće može tamo dalje s "lakim temama".
  • drlovric: @Rusty: Slazem se 100%. Svako bira za sebe. Jedna tema u sekciji Razno, nije smetala nikome ko je dosao da konzumira nesto drugo. Ako sam dosao u ducan da kupim povrce, zasto bi mi smetalo sto prodaju i hranu za bebe? :)
  • rusty: Evo kao dugogodišnji član foruma, moram priznati da niti jednom nisam otvorio političke teme niti sudjelovao u njima na forumu. Dolazim vidjeti non političke, non automobili teme. I jedna i druga su mi kao nogomet, besmislene i ne interesantne. Da li će mi faliti, ne. Da li ću manje dolaziti na forum, ne.
  • dpasaric: To je tvoje viđenje.
  • dpasaric: Obećajem da ćemo je izreklamirati na forumu, pa tko voli…
  • Air: Znam tvoje ovlasti. Nije u tome problem. Problem je što se Jabučnjak predstavlja kao pozitivan, a ovo što ti radiš je negativno!
  • dpasaric: Evo, pokreni i ti moderiraj Signal grupu za vaše političke rasprave.
  • dpasaric: I probaj biti koristan. Pokreni nešto pametno i svima korisno.

Za vikanje moraš biti prijavljen.

Prijava

Novo na Jabučnjaku

Teme

Poruke

Oglasi

Anketa

Koji Mac koristite?

Page Speed 0.38 Seconds

Provided by iJoomla SEO