【发布时间】:2015-03-14 11:28:17
【问题描述】:
PubNub 在 iOS SDK 中提供了这个 sn-p 以在客户端因应用退出活动而被挂起之前调用一些客户端方法:
- (void)pubnubClient:(PubNub *)client willSuspendWithBlock:(void(^)(void(^)(void(^)(void))))preSuspensionBlock {
if ([client isConnected]) {
preSuspensionBlock(^(void(^completionBlock)(void)){
[client sendMessage:@"Hello my friend" toChannel:[PNChannel channelWithName:@"boom"]
withCompletionBlock:^(PNMessageState state, id data) {
if (state != PNMessageSending) {
NSString *message = @"Message has been sent";
if (state == PNMessageSendingError) {
// Handle message sending error
}
// Always call this block as soon as required amount of tasks completed.
completionBlock();
}
}];
});
}
}
现在 XCode 足够聪明,可以将方法声明中的疯狂块语法转换为这个,我想这很好:
public func pubnubClient(client: PubNub!, willSuspendWithBlock preSuspensionBlock: (((((() -> Void)!) -> Void)!) -> Void)!)
我真的不知道如何移植这条线:
preSuspensionBlock(^(void(^completionBlock)(void))
块语法总是让我很生气。
【问题讨论】:
-
我也一样...你找到什么了吗?
-
如果您的问题出在背景上,我最终会使用“shouldRunClientInBackground”来正确使用带有背景的 pubnub...