私はContactFrameworkを使用していました(連絡先を追加するだけです)。そして、問題なく保存されました(連絡先リストを再確認しました)が、最近、このメッセージがコンソールに表示されることに気付きました。
2015-06-12 09:57:39.723 AddingContactToAddressBook [819:291346] HangTracer間隔は0で、強制的に1秒になります
2015-06-12 09:57:39.725 AddingContactToAddressBook [819:291346]が新しいhangtracer接続を作成しました:0x332e10
私はそれをグーグルで検索しましたが、ツイッターで「これはどのような新しい魔法使いですか?」という言及しか見つかりませんでした。
実際、私のコードがこの問題の原因であるかどうかはわかりません。
-(void)verifyUserAuthorizationInIOS9andLower{
CNContactStore * contactStore = [[CNContactStore alloc]init];
if ([CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts] == CNAuthorizationStatusNotDetermined) {
[contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * __nullable error) {
if (granted==YES) {
[self addContactInIOS9andLower];
if ([self addContactInIOS9andLower]) {
NSLog(@"Error");
}
else{
NSLog(@"Error");
}
}
else{
NSLog(@"Error");
}
}];
}
else if ([CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts] == CNAuthorizationStatusAuthorized){
[self addContactInIOS9andLower];
}
else {
NSLog(@"Error");
}
}
-(BOOL)addContactInIOS9andLower{
CNContactStore * contactStore = [[CNContactStore alloc]init];
CNMutableContact *mutableContact = [[CNMutableContact alloc]init];
mutableContact.givenName = name;
mutableContact.familyName = lastname;
mutableContact.phoneNumbers = [[NSArray alloc]initWithObjects:[CNLabeledValue labeledValueWithLabel:CNLabelPhoneNumberiPhone value:[CNPhoneNumber phoneNumberWithStringValue:phone]], nil];
CNSaveRequest * saveRequest = [[CNSaveRequest alloc]init];
[saveRequest addContact:mutableContact toContainerWithIdentifier:nil];
NSError *error = nil;
if ([contactStore executeSaveRequest:saveRequest error:&error]){
return NO;
}
else{
return YES;
}
}
NSLog
にブレークポイントを設定してデバッグすると、[UIApplication startHangtracer:]
が呼び出されます。これは、HTStartHangTracing
の下のスレッドで発生します。
IOS 9以降に発生し、UIApplication
内から発生しているという事実は、iOS9でのAppleの新しいバグレポートフレームワークに強い印象を与えます。
これは、アプリケーションがいつハングしたかを検出することに関する部分かもしれません。
TestFlightを介して配布される場合、誰かがアプリのバグレポートを調査して、このHangTracer
がその一部であることを確認する必要があります。