因此,我一直在努力让我的应用程序为 iOS 4 和 iPhone 4 做好准备。安装了最新的 Xcode 和 SDK,并一直在调整图形等。除了在 iPad 模拟器上运行应用程序时遇到问题,一切都运行良好. 我没有要测试的实际 iPad。
我的应用程序使用 ABUnknownPersonViewController,当我点击“创建新联系人”时它会崩溃,但如果我点击“添加到现有联系人”,它可以正常工作。很奇怪!!
当应用程序崩溃时,我在控制台中得到以下信息:
2010-10-21 13:57:25.873 Copy2contact[58432:207] *** Assertion failure in -[ABPropertyGroup propertyModelControllerAtIndex:], /SourceCache/AddressBookUI_Sim/AddressBookUI-643.49/ABPropertyGroup.m:228
2010-10-21 13:57:25.875 Copy2contact[58432:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: ''
2010-10-21 13:57:25.877 Copy2contact[58432:207] Stack: (
...
...
)
terminate called after throwing an instance of 'NSException'
这不会发生在 iPhone 模拟器或 iPhone 设备上,只是 iPad sim。
- 目标设备系列:iPhone
- 基础 SDK:iOS 设备 3.2
- Xcode 3.2.4
以下是如何构建一个示例程序进行测试:
在 Xcode 中创建一个新的基于导航的 iPhone 项目
将 AddressBook 和 AddressBookUI 框架添加到项目中
将以下行添加到 RootViewController.m 的顶部:
#import <AddressBookUI/ABUnknownPersonViewController.h>
viewDidLoad
在 RootViewController.m 中添加以下内容:[super viewDidLoad];
ABRecordRef personRef = ABPersonCreate();
ABUnknownPersonViewController* abNew = [[ABUnknownPersonViewController alloc] init];
CFErrorRef err = nil; // Should be released if set? ABRecordSetValue(personRef, kABPersonFirstNameProperty, [NSString stringWithString:@"First"], &err) && ABRecordSetValue(personRef, kABPersonLastNameProperty, [NSString stringWithString:@"Last"], &err);
abNew.displayedPerson = personRef;
abNew.allowsActions = NO;
abNew.allowsAddingToAddressBook = YES;
[self.navigationController pushViewController:abNew animated:YES];
[abNew release];
CFRelease(personRef);