我想在不同的塊傳入一個方法。該方法隨後將使用傳入的塊作爲dispatch_async的參數。傳遞塊的方法
我宣佈我的塊這樣的:
typedef int (^ComputationBlock)(int);
接受塊類方法是這樣實現的:
- (void)doSomething:(int)limit withBlock:(ComputationBlock)block;
{
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
// typical in-lined block for dispatch_async:
dispatch_async(queue, ^{
// do some work here
});
// I want to pass in the block as the 2nd parameter to dispatch_async
// but the compiler will warn me of a type mismatch unless I cast
// the block like:
dispatch_async(queue, (dispatch_block_t)block);
}
@end
是否還好類型轉換「block
」參數爲dispatch_block_t
?
N.B. 「ComputationBlock」在返回類型中也不匹配dispatch_block_t:應該是void,實際上是int!旁白:「愚蠢的大自然不好」\ *微笑\ * – danyowdee 2011-01-07 10:13:49