2011-04-15 36 views
0

我正在開發使用本機通訊錄的應用程序。我註冊了一個回調,當通訊錄在外部發生變化時收到通知。iPhone通訊錄外部更改回電

ABAddressBookRegisterExternalChangeCallback(myAddrrbook, changefunction, self) 

我的應用程序可以使新記錄裏面AddressBook,要做到這一點我使用ABNewPersonViewController這樣的:

ABNewPersonViewController *controller = [[ABNewPersonViewController alloc] init]; 

controller.addressBook = myAddrrbook; 

的問題是,在使用自己的應用程序就像我,我仍然收到通知它改變了別的地方。 但是,當我在模擬器上運行時,所有內容都是OK,並且在添加聯繫人時不會發送任何通知。 如何避免在設備上收到通知?

有人有這樣的問題嗎?

回答

2

只要有任何應用程序(包括您的)修改設備AddressBook,就會調用該回調。根據蘋果的文檔:

ABAddressBookRegisterExternalChangeCallback

註冊一個回調時通訊簿 數據庫進行修改以接收通知。

(上找到the apple developer site

在這種情況下,在回調單詞「外部」可能是最好被視爲「外部設備的自己的地址簿的處理代碼」,而不是「外部的我應用程序「

據我所知,濾除變化您的應用程序的唯一方法是在本地進行任何更改之前設置一個標誌,然後檢查回調中的標誌(雖然這有潛在的競爭條件,在大多數使用情況下它不應該是iPhone上的主要問題)