Lunes, Oktubre 25, 2010

iPhone: ang problema ng pagproseso ng mga malalaking halaga ng data

Kung lumikha ka ng mga mas kumplikadong mga aplikasyon, mobile platform Apple, lalo na kapag ginamit sa isang klase ng espasyo CoreData, mayroong isang problema "freez" application. Kapag Isinasagawa ang maramihang mga query sa isang maikling panahon sa pangunahing application thread, may ay isang sitwasyon na kung saan ang pagtingin ay hindi refresh. Sa ibang salita, kung ang programmer ang gustong i-update ang isang progress bar halimbawa, ay upang maisagawa ang mga mas kumplikadong mga operasyon sa isang karagdagang thread sa offload sa main thread at tingnan update.
At habang ang paglikha ng isang bagong thread, pagdating pababa sa isang simpleng code:

 / * Queue ng mga gawain - init (autorelease) * /
 NSOperationQueue * queue = [[NSOperationQueue alloc] init];

 / * Gumawa ng mga gawain, kung saan idagdag sa sa pila, na tinatawag na "gawain" sa isang hiwalay na thread * /
 NSInvocationOperation * operasyon = [[NSInvocationOperation ang alloc] initWithTarget: sarili selector: @ pili (gawain) na bagay: kawalan];

 / * Idagdag ang mga gawain sa queue (thread) * /
 Ang [Queue addOperation: operasyon];

 [Operasyon release];
 [Queue release];

Sa kaso ng mga napaka-komplikadong mga pagpapatakbo sa CoreData bagay, lalo na kapag maraming mga ganoong bagay ay idinagdag sa database at ginanap ang NSManagedContext save paraan, maaaring ang kaso na ang isang bagay na napupunta mali. Kung paano ang iyong application behaves pagdating sa sitwasyong ito sa pangunahing thread? Ang sagot ay hindi malinaw, dahil nakasalalay sa isang bagay na napakahalaga. Katulad, depende sa kung NSManagedContext ay nilikha sa loob ng pangunahing thread o isang nilikhang bagong collateral post. Sa unang kaso, ang application humihinto pagtugon, ngunit ay hindi hihinto sa pagtakbo! Sa ibang salita, ang application ay subukan upang magsagawa ng isang talaan sa ang epekto, ngunit sa hindi mapakinabangan. Ang solusyon sa problemang ito ay upang lumikha ng isang bagong bagay sa loob ang paraan NSManagedContext kaganapan, upang, kahit na ang ilan sa ang operasyon ay nabigo, ang application ay patuloy na gumanap.

Para sa karagdagang impormasyon, tingnan ang dokumentasyon .

Nagtataguyod ang link sa imahe .


Kaugnay na mga entry

Mga Kategorya: iPhone / mobile / gabay
Maaari mong sundin ang anumang sagot na ang entry na ito sa pamamagitan ng RSS 2.0 feed . Maaari mo ring isulat ang iyong sariling mga puna , o mag-link sa post na ito sa iyong pahina.
  • Obraz CAPTCHY
    I-refresh ang Image
    *

    Spam Proteksiyon ng WP-SpamFree