信号量同步到 运行 异步方法
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
在我的应用程序中,我使用异步 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