(Swift) PerformSelector ve GCD (Grand Central Dispatch) Farkı

43 views
Skip to first unread message

Osman YILDIRIM

unread,
Jan 17, 2016, 7:43:30 AM1/17/16
to Cocoaist

Merhaba arkadaşlar bir süredir bu soruyu araştırıyorum ama tam olarak bir sonuç elde edemedim bu yüzden sizlere danışmak istedim. Açıkcası ikisi de aynı şey mi tam olarak anlayamadım ama aşağıdaki 2 farklı kod bloğunu kullanığımda aynı sonucu elde ediyorum. Başka kaynaklardan araştırdığım kadarıyla sanırım aralarında bir fark ama o farkı tam olarak algılayamadım.

Bu kod blokları aynı sonucu vermekte


•   serviceIns.performSelectorInBackground(Selector("GetKey"), withObject: nil)

•   let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)

        dispatch_async(queue) { () -> Void in

            serviceIns.GetKey()

       }

Acaba hangisinin hangi şartlarda kullanılacağına dair bir fikri olan var mı?


Taylan Pince

unread,
Jan 17, 2016, 10:34:17 AM1/17/16
to coco...@googlegroups.com

performSelectorInBackground ve benzeri performSelector metodlari NSObject uzerinde tanimlanmis eski threading / selector metodlaridir. Grand Central Dispatch geldiginden beri bunlari artik kullanmak icin hicbir neden yok. Ozellikle performSelectorInBackground gibi size threading uzerinde kontrol vermeyen metodlari hic kullanmamanizi oneririm.

Bunlarin aralarindaki en buyuk fark, performSelectorInBackground her kullanildiginda yeni bir background thread yaratir. dispatch_get_global_queue ile aldiginiz high priority background queue ise her seferinde aynidir. GCD sizin icin az sayida thread’i surekli kontrol altinda tutarak thread kalabaligini engeller.

Kolay gelsin,

Taylan


--
Taylan Pince
Mighty Leader @ Hipo
@hipolabs


--
--
Yeni bir tartışma konusu açmak için coco...@googlegroups.com adresine email atabilirsiniz.
 
http://groups.google.com/group/cocoaist

---
Bu iletiyi Google Grupları'ndaki "Cocoaist" grubuna abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için cocoaist+u...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için https://groups.google.com/d/optout adresini ziyaret edin.

Osman YILDIRIM

unread,
Jan 17, 2016, 12:40:58 PM1/17/16
to coco...@googlegroups.com
anladım çok teşekkür ederim.Sonuç olarak ama yaptıkları işler aynı değil mi?

17 Ocak 2016 17:33 tarihinde Taylan Pince <tayla...@gmail.com> yazdı:

Taylan Pince

unread,
Jan 17, 2016, 12:49:33 PM1/17/16
to coco...@googlegroups.com

Ayni sey, ama dedigim gibi ust uste performSelectorInBackground cagirirsaniz bircok farkli thread yaratilir. GCD’de oyle bir sorun yok.

Taylan

Osman YILDIRIM

unread,
Jan 17, 2016, 1:51:09 PM1/17/16
to coco...@googlegroups.com
tekrardan çok teşekkür ederim çok güzel bir şekilde açıkladınız :)

17 Ocak 2016 19:49 tarihinde Taylan Pince <tayla...@gmail.com> yazdı:
Reply all
Reply to author
Forward
0 new messages