I have an existing app since 2010, and with iOS 10 it is now required that the app is having strings in the
Termination Reason: TCC, This app has crashed because it attempted to access
privacy-sensitive data without a usage description.
The app's Info.plist must contain an NSContactsUsageDescription key with a string value explaining to the user how the app uses this data.
Triggered by Thread: 2
Thread 0 name: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00000001812501a8 0x18124f000 + 4520
1 libdispatch.dylib 0x000000018113b7ec 0x181128000 + 79852
2 Contacts 0x000000018aa2c63c 0x18a9c8000 + 411196
3 Contacts 0x000000018a9f7c40 0x18a9c8000 + 195648
4 Contacts 0x000000018aa08578 0x18a9c8000 + 263544
5 EventKitUI 0x000000018f18b5a4 0x18f169000 + 140708
6 EventKitUI 0x000000018f2a9628 0x18f169000 + 1312296
7 EventKitUI 0x000000018f2aa3a8 0x18f169000 + 1315752
8 UIKit 0x000000018843b1b4 0x1880e8000 + 3486132
eventStore requestAccessToEntityType:EKEntityTypeEvent completion:(...)
<string>Storing of leave data</string>
I've just had the same problem and believe it is because the EKCalendarChooser can show which of your Contacts is sharing a calendar. I just turned off all sharing including removing family members from iCloud Family and it no longer requires access to Contacts. I then tried to share a calendar with a contact using the EKCalendarChooser and it prompted for permission after I had chosen the contact.
It is a bit of a pain, but the solution is to probably go ahead and add a usage description that tells the user permission is required to show / modify calendar sharing details. Another (and more painful) alternative would be to create your own view for choosing calendars.
I'm not sure if this is intentional by Apple or a bug as I don't know if there is any way for developers to gain access to the contact information from the EKCalendarChooser view anyway.