-[NSRunLoop runUntilDate:]
'u aramak genelde iyi bir fikir midir? Herhangi bir sorun olmadan çalışıyor gibi görünüyor, ancak çalışma döngüsünden çalışma döngüsünden çalışmasını söylemek beni rahatsız ediyor.Arama yapıyor - [NSRunLoop runUntilDate:] iyi bir fikir mi?
diğer bilgiler:
Şu anda bir proje olduğunu REST hizmetinden veri alma olduğunu. Elde edilmesi gereken kritik bir bilgi parçası, geçerli verilere sahip tarih aralığıdır. Bu sadece bir kez alınması gereken çok küçük bir veridir, bu yüzden, bu işlemin en iyi yolunun, yerel değişken nil
ise, veriyi indirmesini sağlamak olduğuna karar verdim. ASIHTTPRequest
ve ASINetworkQueue
kullanıyorum, bu nedenle her şey varsayılan olarak eşzamansızdır ve bunun çalışması için, veriler indirilip işlenene kadar bu özellik geri dönemez. İşte benim kod Ana hatlarıyla, değişkenlerin adları masum korumak için değiştirildi:
__block BOOL isWorking = YES;
__block ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:/*actual URL*/] autorelease];
[request setCompletionBlock:^{
// set local variable
isWorking = NO;
}];
[request setFailedBlock:^{
// show alert to user
isWorking = NO;
}];
[queue addOperation:request];
while (isWorking) {
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
}
Yine, bu iyi çalışıyor gibi görünüyor. Bu yaklaşımı kullanarak herhangi bir potansiyel sorun var mı?
Yani, bu durumda, bu sesler Bu özellik, verileri indirirken meşgulken. Ama eğer kullanıcı meşgulken bir düğmeye basabilir ve bu özelliği tekrar arayabilirse, o zaman havaya uçurur mu? Bilmek güzel. –
Bu özellik doğrudan veya dolaylı olarak herhangi bir UI yöntemi veya temsilci tarafından kullanılıyor mu? Eğer öyleyse, hala büyük bir problem. – hotpaw2
Eminim ki bu kod, kullanıcı UI'nin kullanıcıya sunulmasından önce başlangıçta yüklendiğinde sadece bir kez bu koda basacaktır. Bundan sonra, veriler orada olacak ve yerel değişkeni kullanacaktır. Verileri belirli bir nedenle indiremiyorsa, kullanıcıya kalıcı bir uyarı görüntüler ve başarılı bir şekilde indirilene kadar uygulamaya giremezler. –