需要帮助,目标C奇怪的参数

时间:2010-10-28 03:27:38

标签: iphone objective-c

大家好: 我是Iphone freshMan

今天有线参数让我困惑,

- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void(^)(void))handler

/* ... */

bgTask = [application beginBackgroundTaskWithExpirationHandler: ^{
    dispatch_async(dispatch_get_main_queue(), ^{
        [application endBackgroundTask:self->bgTask];
        self->bgTask = UIBackgroundTaskInvalid;
    });
}];

什么是void(^)

我以前从未见过这个,我希望有人可以帮助我

谢谢!

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

答案 2 :(得分:0)

(void(^)(void))handler表示“handler”参数是一个不带参数且不返回任何参数的Objective-C块。

在您的示例中,处理程序块为:

 ^{
    dispatch_async(dispatch_get_main_queue(), ^{
        [application endBackgroundTask:self->bgTask];
        self->bgTask = UIBackgroundTaskInvalid;
    });
  }

块的内容是“^ {...}”里面的内容。请注意,这是嵌套块的示例:该块包含对dispatch_async的函数调用,后者又接受块参数。