信号量同步运行异步方法

时间:2016-01-18 15:27:15

标签: ios calendar semaphore synchronous

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

据我了解,我应该使用信号量来实现这一目标。使用信号量是我以前从未做过的事情,所以现在我正努力将它们放在正确的位置。

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

这是我的代码:

-(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
        }
    }];

}

1 个答案:

答案 0 :(得分:1)

试试这个:

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