Obecnie używam GCD. Jednak słyszałem, że NSOperation
jest faktycznie programem wyższego poziomu. Jest jednak o wiele bardziej złożony.Który z nich jest łatwiejszy w użyciu? GCD lub NSOperation?
W GCD, zrobić coś w tle jest po prostu skorzystać z tej funkcji pomocnika I Utworzono:
+(void)doForeGround:(void (^)())block
{
dispatch_async(dispatch_get_main_queue(), ^{
block();
});
}
+(void)doBackground:(void (^)())block
{
//DISPATCH_QUEUE_PRIORITY_HIGH
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW,0), ^{
//dispatch_async(dispatch_get_global_queue(-2,0), ^{
block();
});
}
-(void)doBackGround:(void (^)())block onComletion:(void (^)())onCompletion
{
[BGHPTools doBackground:^{
block();
[BGHPTools doForeGround:^{
onCompletion();
}];
}];
}
Will robi to z NSOperation
być prostsze?
Czy brakuje mi czegoś? Jak zrobiłbym to samo w NSoperation?
I przypuszczam, że NSSperation również tworzyć własne zagnieżdżone stosy autorelease? –
https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSOperationQueue_class/Reference/Reference.html nie opisuje metody o nazwie new. Ah musi to być skrót do przydziału] init] –
'+ new' jest dziedziczone z' NSObject', podobnie jak alloc i init. I tak, blok każdej operacji będzie żył w puli autorelease. –