2016-04-07 7 views
0

iPhone 5s (8.4) simülatörüne derleme Restkit (0.20.3) kullanıyorum.Restkit "cancelAllObjectRequestOperationsWithMethod" Zaten Çalışıyor İstek/Eşleştirme

Bir isteği iptal etmek için "cancelAllObjectRequestOperationsWithMethod" ile ilgili birçok yayın gördüm. Şu anda CoreData'ya eşlemek için birkaç saniye süren büyük JSON paketi ile bir isteğim var. Kullanıcı, isteği bir düğme ile manuel olarak iptal etmeyi seçebilir.

Anlayışım doğruysa, bu "cancelAllObjectRequestOperationsWithMethod" şu anda çalışıyor olsa bile isteği durdurmalıdır? Eğer değilse, o zaman sorum benim bunu yapmayı nasıl yapacağım. Fakat eğer mevcut işlemi durdurması gerekiyorsa, o zaman bu, günlükleri temel alarak çalışmakta gibi görünmüyor, çünkü söz konusu API için haritalama için hala çok sayıda baskı ifadesi görüyorum.

NSLog(@"%@", [[RKObjectManager sharedManager] enqueuedObjectRequestOperationsWithMethod:RKRequestMethodAny matchingPathPattern:path]); 
[[RKObjectManager sharedManager] cancelAllObjectRequestOperationsWithMethod:RKRequestMethodAny matchingPathPattern:path]; 
NSLog(@"%@", [[RKObjectManager sharedManager] enqueuedObjectRequestOperationsWithMethod:RKRequestMethodAny matchingPathPattern:path]); 

ilk NSLog state: Executing, isCancelled=NO

ikinci gösterir:

@try{ 
     [[RKObjectManager sharedManager] getObjectsAtPath:path 
               parameters:nil 
                success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {}              failure:^(RKObjectRequestOperation *operation, NSError *error) {} 
@catch(NSException *e) { 
    NSLog(@"%@", e); 
} 

İşte iptal edilmesi için benim kod kullanıcı düğmesine bastığında, var:

İşte API başlama kodum var NSLog, state: Executing, isCancelled=YES

S gösterir. o 'da'u iptal etmeyi başardım, ancak haritalama günlüklerimde görünmeye devam ediyor. Bu noktada yürütme'u zamanında durdurmak mümkün mü?

cevap

0

Hemen duracak, ancak duracaktır. Günlükler de yazdırmak için zaman ayırır ve birden fazla farklı ileti dizisinden geliyor. Bu nedenle, bazı öğelerin sırasına% 100 güvenemezsiniz.

Bir işlemi iptal ettiğinizde, yalnızca bir bayrak ayarlıyorsunuz, bu bayrağı kontrol etmek ve durdurmak için işlem tamamlandı. Her bir işlem, ne yaptıkları ve nasıl yaptıklarına bağlı olarak kontrol etmek için farklı bir zaman (veya zaman kümesi) seçer. Yani, iptal ettiğinizde işlem dahili olarak ne yapıyorsa tamamlanacak ve daha sonra biraz duracaktır.

Önemli olanlardan biri, gelecekteki iptal işlemlerinin bile başlamayacağı ve mevcut iptal edilmiş işlemlerin tamamlama işleyicisini aramayacağıdır.