Если я вас правильно понимаю, вы должны сделать это:
dispatch_queue_t thread = dispatch_queue_create("your dispatch name", NULL);
dispatch_async(analyze, ^{
//code of your anonymous block
});
dispatch_release(thread);
Вы также можете написать некоторый метод, который будет принимать блок, но вы должны знать, какие параметры он будет содержать:
-(void)performBlock:(void (^)(SomeType par1, SomeType par2))block ToData:(Sometype)data;
Вы можете позвонить с анонимным блоком:
[something performBlock:^(SomeType par1, SomeType par2){
//do your stuff
} ToData: data]
И в методе вы можете вызвать свой блок как простую функцию C:
block(par1, par2);