在我的应用程序中,我使用异步类方法,我需要同步运行。
据我了解,我应该使用信号量来实现这一目标。使用信号量是我以前从未做过的事情,所以现在我正努力将它们放在正确的位置。
我希望你们中的一些人可以帮助我。
这是我的代码:
-(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
}
}];
}
答案 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