6

Hàm mà tôi muốn xếp hàng không có tham số. Tôi phải nhập gì vào số paramContext? Đi qua trong NULL tạo ra lỗi biên dịch "Sử dụng không hợp lệ biểu thức void". Tôi không muốn thêm một tham số vào chức năng của tôi chỉ để làm cho nó biên dịch - làm thế nào để tôi thực hiện công việc này?Cách sử dụng dispatch_async_f?

Mac OS X Snowleopard, Xcode 3.2.6 với Objective-C

Trả lời

2

Bạn cần phải quấn bằng cách nào đó. Cách dễ nhất là thực sự sử dụng dispatch_async() thay vào đó, như trong

dispatch_async(queue, ^{ myFunc() }); 
11

Trong khi bạn chỉ có thể vượt qua 0/NULL cho lập luận bối cảnh, dispatch_async_f() mất void (*)(void*) như tham số chức năng, bạn không thể vượt qua nó một chức năng không có đối số.

Bạn cần phải thay đổi chức năng của bạn để có một tham số void*:

void func(void*) {} 

... hoặc nếu bạn không thể, quấn nó:

void orig(void) {} 
void wrapper(void*) { orig(); } 

// ... 
dispatch_async_f(queue, 0, &wrapper);