2010-07-29 26 views
8

Ben bir iPhone uygulamasında NSURLConnection kullanıyorum ve arayüz benim NSURLConnection örneğine initWithRequest: gönderdikten sonra yavaşlatmak gibi görünüyor. Bunun gerçekleşip gerçekleşmediğinden emin değilim çünkü işlem kodum yanıtı işlemek için uzun bir zaman alıyor, ya da NSURLConnection ana iş parçacığını engelliyorsa.NSURLConnection ana iş parçacığını engelliyor mu?

herkes NSURLConnection bağlantı oluşturmak ve ayrı bir iş parçacığı üzerinde veri için bekleyin ve ardından ana iş parçacığı üzerinde temsilci yöntemleri arayacak doğrulayabilir misiniz?

Teşekkürler!

cevap

10

NSURLConnection, iki çalışma modunu destekler: asenkron ve senkron. Ne de ayrı iş parçacıkları kullanır. Her ikisi de, yalnızca bir iş parçacığı kullanırlar. Bu, onları çalıştırdığınız iş parçacığıdır.

Eşzamanlı modda, NSURLConnection, çalıştırdığınız tüm konuları engeller. Eşzamansız mod, benzer şekilde davranacak şekilde çalıştırma döngüsünü kullanır (geliştiricinin bakış açısıyla). Bir arka plan iş parçacığı ancak daha düşük bir yük ile ve herhangi bir iş parçacığı güvenliği sorunu olmadan. Eşzamansız mod kullanıyorsanız, ana iş parçacığında çalıştırmak istersiniz. Hiçbir şey engellemez. Arayüz yavaşlatıyorsa

, bu istek tamamlanana kadar yerine arayüzü tamamen durmasına neden olur ki, eşzamanlı NSURLConnection kullanarak tutarlı değildir.

+5

Son cümleye dikkat etmelisiniz! Örneğin, 5000 küçük istekleri varsa, kullanıcı deneyimi, son zamanlarda – Tomen

+2

olan NSURLConnection kullanımı eşzamansız bir iş parçacığı, bir iç oluşturmak, arabirim yavaşlıyor, (çok küçük durur nedeniyle) olabilir. Bu asenkronize tanımıdır. – malhal

-1

Eğer NSURLConnection çağrı ana iş parçacığı farklı bir iş parçacığı ele alınacaktır üzerinde elma örneğini takip edin.

İlgili konular