信号量同步到 运行 异步方法

Semaphores to run asynchronous method synchronously

在我的应用程序中,我使用异步 class 方法,我需要同步 运行。

据我了解,我应该使用信号量来完成此操作。使用信号量是我以前从未做过的事情,所以现在我正在努力将它们放在正确的位置。

我希望你们中的一些人能帮助我。

这是我的代码:

-(void)CreateNewerEventInCalendar:(Event*)myEvent{
     [MyCalendar requestAccess:^(BOOL granted, NSError *error) {
                if (granted) {
            BOOL result = [MyCalendar addEventAt:myEvent.StartPoint withTitle:myEvent.Subject inLocation:myEvent.Location];
            if (result) {
                // added to calendar
            } else {
                // unable to create event/calendar
            }
        } else {
            // you don't have permissions to access calendars
        }
    }];

}

试试这个:

dispatch_semaphore_t sema = dispatch_semaphore_create(0);

[MyCalendar requestAccess:^(BOOL granted, NSError *error) {

    // your implementation
    dispatch_semaphore_signal(sema);
}];

dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
// continue here