[英]getting notified when addressbook updates
我正在嘗試使用預定義的方法從addressBook
獲取更新
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
ABAddressBookRegisterExternalChangeCallback(addressBook, addressBookChanged, self);
void addressBookChanged(ABAddressBookRef addressBook, CFDictionaryRef info, void *context)
{
NSLog(@"AddressBook Changed");
[self getContactsFromAddressBook];
}
我正在調用ABAddressBookRegisterExternalChangeCallback(addressBook, addressBookChanged, self);
在我的application:didFinishLaunchingWithOptions
,然后我做回調方法,該c方法中如何使用self? 如果無法使用對象,如何更新表格視圖?
您不能在該函數中直接使用self
但是在注冊change回調時會將self作為上下文傳遞,因此它將作為參數傳遞給addressBookChanged函數。
void addressBookChanged(ABAddressBookRef addressBook, CFDictionaryRef info, void *context)
{
NSLog(@"AddressBook Changed");
YourClass *yourInstance = (__bridge YourClass *)(context)
[yourInstance getContactsFromAddressBook];
}
更具體地講授您的課程-
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
ABAddressBookRegisterExternalChangeCallback(addressBook, addressBookChanged, self.wkListVC);
return YES;
}
void addressBookChanged(ABAddressBookRef addressBook, CFDictionaryRef info, void *context)
{
NSLog(@"AddressBook Changed");
wbkABViewControllerTableViewController *myVC = (__bridge wbkABViewControllerTableViewController *)context;
[myVC getPersonOutOfAddressBook];
}
注冊更改回調時,請確保self.wkListVC不為nil。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.