そのため、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);