Bu yazıda, NSURLSession ve NSURLConnection aracılığıyla timeOut ayarlamalarını nasıl yapabileceğinizi öğreneceksiniz TimeOut ayarları, veri alışverişi sürecindeki gecikmeleri önleyerek uygulamanızın performansını artırır ve kullanıcı deneyimini iyileştirir Detaylı bilgiye yazımızdan ulaşabilirsiniz
NSURLSession ve NSURLConnection, bir ağ işlemi zaman aşımına uğradığında yanıt alımı durur. Bu durum, özellikle internet bağlantısı yavaş ya da kesintili olduğunda sıkça yaşanır. Bu yazıda, NSURLSession ve NSURLConnection yöntemleri kullanılarak zaman aşımı ayarlamak için adımlar açıklanmaktadır.
NSURLSession, URL yüklemelerinde zaman aşımı ayarlanmak istendiğinde biraz farklı bir yöntem kullanır. NSURLSessionDelegate olarak NSURLSession'ı kullanarak, URL yüklemelerinde zaman aşımını özelleştirmek mümkündür. sessionWithConfiguration:delegate:delegateQueue: yöntemi kullanılarak, delegate ve timeoutIntervalForRequest dahil yapılandırma seçeneklerinin fonksiyonları özelleştirilebilir. Bu yöntemle, timeout özelliği kullanarak süreyi ayarlamak mümkündür. Ayarlanan süre sona erdiğinde, NSURLSessionDelegate'deki URL yüklemeleri kapatılır.
NSURLConnection ise, URL yüklemelerinde zaman aşımı ayarlamak için bazı seçenekler sunar. Örneğin, sendAsynchronousRequest:request queue:queue: yöntemi zaman aşımı süresiyle belirlenir ve URL yüklemeleri yüklemelerden önce zaman aşımına uğramalarını sağlar. NSURLRequesttimeoutInterval özelliği ise, bir URL yüklemesi ayarlandığında kullanılacak zaman aşımını belirtir. Bu süre yalnızca o yüklemeye özel olmalıdır. Ayrıca, NSURLConnection instance'ı üzerinde setTimoutInterval çağrısı yaparak, zaman aşımını istenilen şekilde değiştirmek mümkündür.
Bu yöntemler sayesinde, NSURLSession ve NSURLConnection'un sağladığı URL yükleme süreleri özelleştirilerek, zaman aşımı süresi istenilen şekilde ayarlanabilir. Böylece, internet bağlantısı yavaş olsa dahi, yanıt alımı daha hızlı ve kesintisiz bir şekilde gerçekleştirilebilir.
NSURLSession'da TimeOut Ayarlamak
NSURLSession, bir ağ işlemi tamamlandığında bir yanıt almak yerine, bir URL'yi yüklediğinde yanıt almak için kullanılır. Bir URL yüklemesi yaparken, zamanında yanıt alamadığınızda zaman aşımına uğrayabilirsiniz. NSURLSessionDelegate, NSURLSession'ı kullanarak ağ işlemlerinin zaman aşımı süresini ayarlamak için önemli bir araçtır.
NSURLRequest nesnesi oluştururken, URL yüklemesi için bir zaman aşımı süresi belirtebilirsiniz. Bu süre, yalnızca belirtilen URL yüklendiğinde geçerli olacaktır. Öncesinde NSURLSessionConfiguration nesnesi oluşturulmalıdır. Delegate tanımlanır ve NSURLSession oluşturulur.
sessionWithConfiguration:delegate:delegateQueue:
NSURLSession'in kendi yapılandırma seçenekleri vardır ve bunlar delegate ve timeoutIntervalForRequest dahil diğer seçenekleri de içerir. Bu metod, NSURLSessionDelegate örneği ve çalıştırılacak kuyruğu içeren bir yapılandırma seçeneği sağlar. delegate parametresi, NSURLSessionDelegate'yı uygulayan nesneyi temsil ederken delegateQueue, bir iş parçası kuyruğu seçeneğidir.
Yapılandırma seçeneklerini özelleştirdikten sonra, NSURLSession instance'ını başlatmak için sessionWithConfiguration:delegate:delegateQueue: metodunu kullanabilirsiniz. Bu sayede, NSURLSession örneğini oluştururken, oluşturduğunuz yapılandırma seçeneklerini kullanarak isteklerinizde zaman aşımı ayarlarını özelleştirebilirsiniz. Bu sayede isteklerinizin tamamlanmaması veya istenmeyen durumlar oluşmaması için gerekli önlemleri almış olursunuz.
Timeout özelliği nasıl ayarlanır
NSURLSession, ağ işlemlerinde zaman aşımı süresi ayarlamak için birkaç seçenek sunar. timeout özelliği ile, ağ işlemlerinde zaman aşımı süresini ayarlayabilirsiniz. Bir NSURLSession yapılandırması oluştururken, timeoutIntervalForResource veya timeoutIntervalForRequest değerlerinden birini kullanarak, her bir ağ işlemi için özel zaman aşımı süreleri belirleyebilirsiniz. timeoutIntervalForResource, bir kaynağı indirmek için harcanabilecek maksimum süreyi belirlerken, timeoutIntervalForRequest, bir isteğin tamamlanması için harcanabilecek maksimum süreyi belirler.
timeout özelliği | Açıklama |
---|---|
timeoutIntervalForResource | Kaynağı indirmek için harcanabilecek maksimum süreyi belirler. |
timeoutIntervalForRequest | Bir isteğin tamamlanması için harcanabilecek maksimum süreyi belirler. |
NSURLSession’ın bir diğer özelliği de URL yüklemelerindeki zaman aşımını kullanıcı tarafından iptal etmek için NSURLSessionTask sınıfı sağlamasıdır. Bu özellik, bir yükleme yüklenirken kullanıcının zaman aşımı süresini kısaltıp kısaltmadığını izlemeyi kolaylaştırır. Timeout özelliği zaman aşımı süresine dair bir sınır oluşturduğu için, kullanıcılar istenmeyen yavaşlamaları önleyebilirler.
Zaman aşımı ne zaman çalışır?
Zaman aşımı, bir URL yüklemesi sırasında belirli bir süre içinde beklenen yanıt gelmezse devreye girer. Ayarlanan sürenin sona ermesi durumunda, NSURLSessionDelegate'deki URL yüklemeleri otomatik olarak kapatılır. Bu işlem, belirli bir sürenin sonunda bir URL yanıtı gelmediğinde önlem alınmasına yardımcı olur. Özellikle yoğun trafikli web sitelerinde, zaman aşımı ayarlamak büyük önem taşır.
Zaman aşımı ayarlamak, özellikle yavaş internet bağlantılarındaki URL yüklemeleri için gereklidir. NSURLSessionDelegate gibi yöntemlerde, timeoutInterval özelliği kullanılarak zaman aşımı süresi belirlenir. Ayarlanan süre sona erdiğinde, URL yüklemesi kapatılır ve ağ bağlantısı kesilir. Bu sayede, kullanıcılar beklemek zorunda kalmazlar ve URL yüklemesi daha hızlı tamamlanır.
NSURLConnection'da TimeOut Ayarlamak
NSURLConnection, URL yüklemelerinde anlık zaman aşımı ayarlamak için özellikle setTimoutInterval çağrısını kullanarak zaman aşım süresini değiştirebilirsiniz. Bu yöntem, URL yüklemelerine özgü olarak zaman aşımının ne zaman çalışacağını belirler. Öte yandan, sendAsynchronousRequest:request queue:queue: yöntemi ile URL yüklemeleri yüklenmeden önce zaman aşımına uğramaları sağlanarak setTimoutInterval çağrısından bağımsız olarak bir zaman aşımı süresi belirtilir. Ayrıca, setDelegateQueue:yapılandırması: yöntemi, NSURLSession gibi bir kuyruk kullanarak belirli bir kuyruğa URL yüklemelerini planlamak için kullanılabilir. Bu yöntem, daha eski bir yüklemenin tamamlanması beklerken yeni bir URL yüklemesi başlatacak bir işlev sunar.NSURLRequesttimeoutIntervalÖzelliği belirtilerek, URL yüklemeleri için ayrı yöntemler kullanarak zaman aşımı süresini ayarlayabilirsiniz. Bu özellik, URL yüklemesinin ayarlandığı zaman aşım süresinin yalnızca o yüklemeye özgü olduğunu belirtir.
setDelegateQueue:yapılandırması:
NSURLConnection, URL yüklemelerinde zaman aşımı ayarlamak için birkaç seçenek sunar. Bunlardan biri, setDelegateQueue:yapılandırması ile belirtilen kuyruğa yüklemeleri plana sokmaktır. Bu özellik, doğrudan bir yükleme yerine işlemin sıraya alınmasını sağlar. Bu yöntemle birden fazla URL yüklemesi aynı anda yapılmak üzere planlanabilir ve daha sonra sıraya alınarak önceliklerine göre işleme alınabilirler. Yani, bu yöntemle, daha eski bir yüklemeye zaman aşımı çalışırsa, bu işlem durdurulmayacak ve sıradaki yükleme işlemi işlenmeye devam edecektir. Bu sayede, yüklemelerin daha düzenli şekilde yapılabilmesi sağlanır.
Özet olarak, setDelegateQueue:yapılandırması, yüklemelerin plana sokulmasını ve sırayla işleme alınmasını sağlar, böylece birden fazla yüklemenin aynı anda yapılabilmesine olanak tanır. Bu özellik sayesinde, URL yüklemelerinde zaman aşımı yaşansa bile diğer yüklemeler işleme devam edebileceği için işlemler daha düzenli bir şekilde gerçekleştirilebilir.
sendAsynchronousRequest:request queue:queue:
NSURLConnection, URL yüklemelerinde zaman aşımı ayarlamak için birkaç seçenek sunar. Bunlardan biri, sendAsynchronousRequest:request queue:queue: yöntemidir. Bu yöntem, URL yüklemelerini yüklemelerden önce zaman aşımına uğramalarını sağlamak için zaman aşımı süresiyle belirlenir.
NSURLRequest nesnesi ve istediğiniz URL adresi ile birlikte bu yöntemi kullanarak zaman aşımını ayarlayabilirsiniz. Bu yöntem, tamamen asenkron çalışır ve belirtilen kuyruğu kullanarak tamamlanma zamanı hakkında bilgi verir. Bu yöntemde timeoutInterval parametresine yer verilir ve istenilen süre milisaniye cinsinden belirlenir.
Bu yöntemi kullanarak yüklemelerinizin zaman aşımına uğramasını önleyebilirsiniz. Ayrıca, yüklemelerinizin ne kadar sürede tamamlandığını da izleyebilirsiniz. Bu yöntem, özellikle büyük boyutlu dosyaların yüklenmesi durumunda oldukça kullanışlıdır.
NSURLRequesttimeoutIntervalÖzelliği:
NSURLRequesttimeoutInterval özelliği, NSURLSession ve NSURLConnection'da zaman aşımı ayarlamak için kullanabileceğiniz bir özelliktir. Bu özellik, bir URL yüklemesi tam olarak ayarlandıktan sonra kullanacak zaman aşımını belirlemeye yarar. Bu süre yalnızca o yüklemeye özeldir ve başka yüklemeleri etkilemez.
NSURLRequesttimeoutInterval özelliği, özellikle NSURLSession kullanırken yararlıdır. Bu sayede yalnızca belirli URL yüklemelerini zaman aşımına uğratıp, diğer yüklemelere daha uzun bir zaman dilimi verilebilir. Örneğin, video yüklemeleri için daha uzun bir zaman dilimi belirlenirken, küçük resimler için daha kısa bir zaman dilimi belirlenebilir.
NSURLRequesttimeoutInterval özelliği, diğer seçeneklerden farklı olarak yalnızca NSURLSession ve NSURLConnection'da kullanılabilir. Bu sebeple bu özellik, URL yüklemesi yaparken zaman aşımı ayarlamak isteyenler için oldukça kullanışlı bir seçenektir.
Sonuç olarak, NSURLRequesttimeoutInterval özelliği bir URL yüklemesi yaparken zaman aşımı süresini ayarlamak isteyenler için kullanışlı bir özelliktir. Özellikle NSURLSession kullanırken, yalnızca belirli yüklemelere zaman aşımı süresi belirleyip, diğer yüklemelere farklı bir süre verebilirsiniz.
NSURLConnection instance'ı üzerinde setTimoutInterval çağrısı yaparak
Kullanıcı, NSURLConnection instance'ı oluşturduktan sonra, bir talep göndererek url yüklemesini başlatır. Bu sırada timeoutInterval özelliği varsayılan olarak 60 saniyede ayarlanmıştır. Bu sürenin değiştirilmesi gerekiyorsa, setTimoutInterval fonksiyonu kullanılabilir.
NSURLConnection instance'ına setTimoutInterval fonksiyonu çağrısı yapılarak, kullanıcının özel bir zaman aşımı belirtmesine olanak sağlanır. Örneğin, aşağıdaki kod parçasında 10 saniyelik bir zaman aşımı tanımlanır:
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];[connection setDelegateQueue:[[NSOperationQueue alloc] init]]; [connection setTimoutInterval:10]; [connection start];
Bu kod parçasında, kullanıcının talebi göndermek için oluşturduğu NSURLConnection instance'ı connection olarak adlandırılmaktadır. setDelegateQueue fonksiyonu ile instance'ın kuyruğu ayarlanırken, setTimoutInterval fonksiyonuyla da zaman aşımı süresi belirlenir. Bu örnekte, 10 saniyelik bir aşım süresi belirlenmiştir.