我正在 ios 中编写一个自定义地址簿应用程序,并使用单例地址簿引用。
下面是我的操作步骤:
+ (ABAddressBookRef) sharedAddressBook
{
static ABAddressBookRef ref = nil;
if ( ref == nil )
{
ref = ABAddressBookCreate();
}
return ( ref );
}
step1:打开我的通讯录应用
ABAddressBookRef addressBook = [ABAddressBook sharedAddressBook];
ABRecordRef person = ABAddressBookGetPersonWithRecordID( addressBook, 83 );
NSString* name= ABRecordCopyValue(person,kABPersonFirstNameProperty);
NSLog(@"%@",name);
控制台打印“aaa”。
第2步:
退出我的应用程序(进入后台,而不是杀死),使用系统拨号器将“aaa”人名更改为“bbb”。
第三步:
打开我的应用程序(enterForeground),做同样的事情
ABAddressBookRef addressBook = [ABAddressBook sharedAddressBook];
ABRecordRef person = ABAddressBookGetPersonWithRecordID( addressBook, 83 );
NSString* name= ABRecordCopyValue(person,kABPersonFirstNameProperty);
NSLog(@"%@",name);
控制台打印“aaa”。
我的问题是
1.为什么使用旧的addressBookRef时控制台打印“aaa”而不是“bbb”?当我将 [ABAddressBook sharedAddressBook] 更改为 ABAddressBookCreate() 时,一切似乎都正常。为什么旧的 addressBookRef 无法保持最新?
2.我每次都需要在enterForeground 做ABAddressBookCreate() 吗?
3.我编辑人员信息时记录ID是否更改?我猜测。