Description of enumerateEventsMatchingPredicate: usingBlock: and eventsMatchingPredicate: in the EKEventStore link imply that it is safe:
This method is synchronous. For asynchronous behavior, run the method on another thread using dispatch_async or NSOperation.
I am currently doing this in one of my applications and it seems to be working.
source share