首页 文章

为什么完成块变为空? [等候接听]

提问于
浏览
-3

我已经实现了以下完成块,当我得到结果时,completionBlock是 null . 所以完成块没有被触发,因为它不会进入条件 . 为什么完成阻止 null

-(void)checkIfThereAnyValidCouponCodeAsTeacherWithCompletionHandler:(void(^)(NSDate *date))completionBlock{
    [[DDDataManager defaultManager] checkIfThereAnyValidCouponCodeAsTeacherWithCompletionHandler:^(NSDate *expireDate) {
        _expireDate = expireDate;
        if (completionBlock) {
            completionBlock(expireDate);
        }
    }];
}

呼叫者

-(void)loadData{
    [[DDCouponCodesManager sharedManager] checkIfThereAnyValidCouponCodeAsTeacherWithCompletionHandler:^(NSDate *date) {
        [self checkAndReloadData];
    }];
}

1 回答

  • -4

    你试图在其他块响应中调用块,这两个块都将以异步方式工作,所以你的 completionBlock 是nulll . 请使用 dispatch_semaphore_t 来实现您的目标 .

    使用dispatch_semaphore_t将等待您的内部块响应,然后它将调用您的完成块 .

    要使用dispatch_semaphore_t,您可以从此链接获得帮助How do I wait for an asynchronously dispatched block to finish?

相关问题