大家好: 我是Iphone freshMan
今天有线参数让我困惑,
- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void(^)(void))handler
/* ... */
bgTask = [application beginBackgroundTaskWithExpirationHandler: ^{
dispatch_async(dispatch_get_main_queue(), ^{
[application endBackgroundTask:self->bgTask];
self->bgTask = UIBackgroundTaskInvalid;
});
}];
什么是void(^)
我以前从未见过这个,我希望有人可以帮助我
谢谢!
答案 0 :(得分:2)
这是Objective-C“阻止”语法。看看http://developer.apple.com/library/ios/featuredarticles/Short_Practical_Guide_Blocks/index.html#//apple_ref/doc/uid/TP40009758
答案 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
的函数调用,后者又接受块参数。