Attualmente sto usando GCD. Tuttavia, ho sentito che NSOperation
è in realtà un programma di livello superiore. È molto più complesso però.Quale è più facile da usare? GCD o NSOperation?
In GCD, fare qualcosa in fondo è sufficiente utilizzare questa funzione di supporto che ho creato:
+(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 farlo con NSOperation
essere più semplice?
Mi manca qualcosa? Come dovrei fare la stessa cosa a NSoperation?
E suppongo che NSOperation crei anche i propri stack di autorelease annidati? –
https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSOperationQueue_class/Reference/Reference.html non descrive un metodo chiamato nuovo. Ah deve essere quella scorciatoia per alloc] init] –
'+ new' è ereditato da' NSObject', proprio come alloc e init. E sì, il blocco di ogni operazione vivrà in un pool di autorelease. –