1
내가 권한이 달력 나는 그것을 실행하는 각 방법에 걸리는 시간을 표시하는 로그를 넣어 EKEventStore 블록 UI 스레드
을 편집하는 사용자를 요청하려고하고, 그것이 몇 밀리 초 을위한 것을 말한다문제가 내가 권한을 요청 직후이며, UI 스레드는 로그가이 말을 분
이상 동안 차단 될 것 같다
2014-11-09 22:09:07.236 FixGift[60052:22b] I,-[EACalendarManager getLocalEventCalendarsWithHandler:]:91
[fg16,179,176;before start request[;
2014-11-09 22:09:08.795 App[60052:4607] I,__55-[EACalendarManager getLocalEventCalendarsWithHandler:]_block_invoke:101
[fg16,179,176;before start callback[;
2014-11-09 22:09:08.805 App[60052:4607] I,__42-[EANewEventViewController askPermission:]_block_invoke:433
[fg16,179,176;before save event[;
2014-11-09 22:09:08.807 App[60052:4607] I,__69-[EANewEventViewController saveEventToCalendarWithManager:eventInfo:]_block_invoke:443
[fg16,179,176;created calendar[;
2014-11-09 22:09:08.840 App[60052:60b] I,-[EABaseViewController dealloc]:106
[fg16,179,176;deallocated:EABaseViewController[;
2014-11-09 22:09:08.841 App[60052:60b] I,-[EABaseViewController dealloc]:106
[fg16,179,176;deallocated:EABaseViewController[;
2014-11-09 22:09:08.840 App[60052:4607] I,__42-[EANewEventViewController askPermission:]_block_invoke:435
[fg16,179,176;after save event[;
2014-11-09 22:09:08.842 App[60052:4607] I,__55-[EACalendarManager getLocalEventCalendarsWithHandler:]_block_invoke:107
[fg16,179,176;after callback[;
-(void)getLocalEventCalendarsWithHandler:(EACalendarManagerEventsCallback)callback{
__weak typeof (self)weakself = self;
if(!self.eventsAccessGranted){
LogInfo(@"before start request");
[self.eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if(!granted){
NSLog(@"Error requesting access to events:%@",error);
if(callback){
callback(granted,error,nil);
}
return ;
}
LogInfo(@"before start callback");
NSArray *calendars =[weakself getLocalEventCalendars];
if(callback){
callback(granted,error,calendars);
}
LogInfo(@"after callback");
}];
}else {
NSArray *calendars =[self getLocalEventCalendars];
if(callback){
callback(YES,nil,calendars);
}
}
}
무엇 문제를 해결할 수 있습니까?
콜백 코드를 표시하지 않지만 UI를 업데이트하는 경우 기본 대기열에 전달해야합니다. – Paulw11
정답입니다! 고맙습니다. 답변을 올리면 받아 들일 것입니다. –