【发布时间】:2010-10-21 18:23:59
【问题描述】:
所以我一直在努力让我的应用程序为 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> -
将以下内容添加到 RootViewController.m 中的
viewDidLoad:[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);
【问题讨论】:
-
更新:我已经经历了 Base SDK 和 iOS 目标版本等的每一次迭代,最重要的是,如果目标设备系列是,我无法让它在 iPad 模拟器上工作设置为 iPhone。如果我创建一个 iPad 应用程序,它可以在没有断言的情况下工作,但不幸的是,这不是我的项目的选项。
标签: iphone exception ipad addressbook assertion