Tôi gặp sự cố lạ khi đăng ký ứng dụng iOS để nghe các thay đổi trong sổ địa chỉ của điện thoại. Phương thức chính xác được gọi khi có gì đó thay đổi trong sổ địa chỉ nhưng nó được gọi là 2 - 6 lần.ABAddressBookRegisterExternalChangeCallback được gọi nhiều lần
Khi các đối tượng được tạo ra (singleton, vì vậy chỉ có một đối tượng), tôi đăng ký thông báo với mã này:
ABAddressBookRegisterExternalChangeCallback(notificationAddressBook, addressBookChanged, (__bridge_retained void *)self);
phương pháp
Các đó được gọi là vẻ bề ngoài như thế này:void addressBookChanged(ABAddressBookRef ab, CFDictionaryRef info, void *context){
ABAddressBookRevert(ab);
NSLog(@"ADDRESSBOOK CHANGED");
[phoneBookCopy updateCopy];
}
Bất kỳ ý tưởng làm thế nào để giải quyết điều này?
Tôi cũng gặp sự cố này. Mỗi khi tôi chuyển sang sổ địa chỉ iOS để thay đổi tên của một liên hệ và chuyển về ứng dụng của tôi, cuộc gọi lại được gọi là bốn lần - luôn luôn. Tôi đã thử thêm ngữ cảnh khi đăng ký và tôi thấy rằng ngữ cảnh của tôi được gửi cho tôi trong cả bốn cuộc gọi. Tôi đọc ở đây: http://stackoverflow.com/questions/7116956/gcd-and-callbacks-concurrency-issue rằng ai đó tuyên bố rằng đây là lỗi đã biết nhưng tôi chưa tìm thấy. Có ai có thêm thông tin về hành vi khó chịu này không? –