iOS 通訊錄基礎 – iPhone手機開發技術文章 iPhone軟體開發教學課程

iOS 6 之後應用訪問通訊錄需要獲得用戶授權,並且隻授權一次,即使卸載瞭之後再安裝,也不用再次授權;

開發通訊錄應用需要兩個框架:

1.ABAddressBook 主要用於提供訪問通訊錄中的記錄和屬性等API,使用他需要自己構建UI。

2.ABAddressBookUI 這個框架給我們提供瞭4個視圖控制器以及相應的委托協議,他們已經提供瞭UI界面

ABAddressBook 框架中常用的類“()”前面的類為Foundation中的類,()內的是Core Foundation框架中類

ABAddressBook(ABAddressBookRef)封裝訪問通訊錄接口;

ABPerson (ABPersonRef)封裝通訊錄個人信息數據,是數據庫的一條的記錄;

ABGroup (ABGroupRef)封裝通訊錄信息數據,一個組包含多個人的信息,一個人的信息可以屬於多個組;

ABRecord (ABRecordRef) 封裝數據庫中得一條記錄,記錄由屬性組成;

ABAddressBookUI框架中的視圖控制器

ABPeoplePickerNavigationController 他是從數據庫中選取聯系人導航控制器,對應的委托協議為ABPeoplePickerNavigationControllerDelegate

ABPersonViewController 查看並編輯單個聯系人的信息,對應的委托協議為ABPersonViewControllerDelegate

ABNewPersonViewController 創建新聯系人信息,對應的委托協議為ABNewPersonViewControllerDelegate

ABUnknowPersonViewController 呈現記錄部分信息,這些信息可以創建新聯系人的信息,或者添加到已存在的聯系人,對應的委托協議為ABUnknowPwesonViewControllerDelegate

在使用ABAddressBook時我們使用的是Core Foundation框架; Core Foundation(c語言) 框架和Foundation(o-c)框架是相同的功能接口,如果要混合使用需要兩個框架之間的“無開銷橋接”;

這裡用NSAArray來舉個例子:

將Core Foundation類型轉換為Foundation類型

CFArrayRef x;
    //第一種轉換方式
    NSArray *array = (__bridge NSArray *)x;
    //第二種轉換方式
    array = CFBridgingRelease(x);

使用第一種轉換方式時不轉換對象所有權,隻是強制轉換。需要手動釋放對象;

使用第二種轉換方式時轉換對象所有權,並把對象所有權轉讓ARC ,不需要手動釋放

將Foundation類型轉換為Core Foundation類型

NSArray * array = nil;
    //第一種方式
    CFArrayRef arrayRef = (__bridge CFArrayRef)array;
    //第二種方式
    arrayRef = CFBridgingRetain(array);

這兩種方式同樣是第一種不轉換對象所有權,還是Foundation對象所以自動釋放 。

第二種轉換對象所有權需要手動釋放對象(CFRelease(arrayRef);)

發佈留言