ios - 在通讯录更新时收到通知

标签 ios tableview addressbook

我正在尝试从 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?如果我不能使用我的对象,我该如何更新我的表格 View ?

最佳答案

不能直接使用self在该函数中-但是当您注册更改回调时,您将 self 作为上下文传递,因此它将作为 addressBookChanged 函数中的参数传递。

void addressBookChanged(ABAddressBookRef addressBook, CFDictionaryRef info, void *context)
{
    NSLog(@"AddressBook Changed");
    YourClass *yourInstance = (__bridge YourClass *)(context)
    [yourInstance getContactsFromAddressBook];
}

更具体到您的类(class) -
- (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 不为零。

关于ios - 在通讯录更新时收到通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24558169/

相关文章:

objective-c - Facebook sdk3.1 中的注销功能崩溃

iphone - 使用核心数据生成的类作为模型对象……?

ios - 如何从弹出 View Controller 获取数据到自定义表格 View 单元格?

ios - 添加和保存新联系人到地址簿

ios - 删除 Realm 中的项目时出现错误 "Object has been deleted or invalidated"

ios - 使用 Alamofire 从 UIImagePickerController 上传图像

ios - 一次在 tableviewcell 中显示一个单词

java - 更新 javafx 中突出显示的单元格

iPhone SDK - 如何序列化 ABRecord?

authorization - 模拟器中的 ABAddressBookGetAuthorizationStatus 总是返回 kABAuthorizationStatusAuthorized