問題タブ [addressbook]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cocoa - 名簿スレッドの安全性とパフォーマンス
アドレス帳のドキュメントからの私の感覚と、基盤となるCoreDataの実装についての私の理解は、アドレス帳はスレッドセーフである必要があり、複数のスレッドからクエリを実行しても問題がないことを示唆しています。しかし、ドキュメントでスレッドセーフに関する明確な議論を見つけるのに苦労しています。これはいくつかの質問を提起します:
- 読み取り専用アクセスのために複数のスレッドで+sharedAddressBookを使用するのは安全ですか?答えはイエスだと思います。
- バックグラウンドスレッドでの書き込みアクセスについては、代わりに+ addressBookを使用する必要があるようです(変更を手動で保存します)。私はこれを正しく理解していますか?
- 複数のスレッドでアドレス帳に複数の同時クエリを実行することによるパフォーマンスへの影響を調査した人はいますか?これは、複数のスレッドで複数のCoreDataクエリを実行するパフォーマンスと非常に似ているはずです。私の感覚では、並列クエリを作成しても、SQLLiteにヒットしたときにシリアル化されると想定しているため、ほとんど利益が得られませんが、ここではわかりません。
AddressBookに対して数十のクエリ(複雑なもの)を作成する必要があり、UIのブロックを回避するためにNSOperationを使用してバックグラウンドスレッドで実行しています(現在は実行しています)。私の根本的な質問は、最大同時操作を1より大きい値に設定することが理にかなっているかどうか、およびアプリケーションが別のスレッドで同時にAddressBookに書き込んでいる可能性がある場合にそうすることに危険があるかどうかです。
iphone - ABPersonSetImageDataは画像を表示しません
ABUnknownPersonViewControllerを使用して連絡先ビューを表示します。
私は次のように画像を設定しようとしています:
それは機能せず、理由はわかりません。何か案は?
iphone - iPhone SDK: ABAddressBookRef の CFRelease を使用した EXC_BAD_ACCESS
私のコードに非常に奇妙なエラーがあります..実際、エラーはまったくありません.デバッガーは「プログラムがシグナルを受け取りました: “EXC_BAD_ACCESS”」というメッセージで始まります. 誰でも私を助けることができますか?私は完全に混乱しています...ありがとう。
コンソール出力は次のとおりです。
[続行] を押すと、"EXC_BAD_ACCESS" メッセージが出力されます。Xcode は、私のコードで最後に実行された文字列がCFRelease(addressBookRef);
iphone - ゼロと評価される名簿定数
特定のコードパスについて、アドレス帳定数(kABPersonEmailProperty、kABPersonAddressPropertyなど)が通常のゼロ以外の値に評価されるプログラムがあります。ただし、別のコードパスをたどると、これらの定数はすべてゼロと評価されます。
さらに、「成功した」コードパスをたどると、問題のあるコードパスをたどると機能します。
これはある種のコンパイルリンケージの問題ですか?
また、どこかで変数を過剰にリリースしている可能性もあります。
iphone - 連絡先のリストを NSUserDefaults に保存する
iPhone のビルトイン アドレス ブック フレームワークを使用して、特定の連絡先リストを NSUserDefaults の配列に保存するにはどうすればよいですか? 受信者のリストを後で保存する必要があります。
アプリケーションを閉じた後にユーザーが連絡先を編集しても、問題が発生しないようにしたいと考えています。保存して後で検索できる、各連絡先に固有の ID はありますか?
iphone - ユーザー ピッカー ナビゲーション コントローラーの空の「グループ」
標準の People Picker Navigation Controller を使用して、ユーザーが自分の連絡先の 1 つを私のオブジェクトの 1 つに関連付けられるようにしています。
すべての連絡先の長いリストとして表示されます。
戻るボタン (左上) には「グループ」と表示されていますが、クリックすると、ユーザーのアドレス帳に多数のグループがある場合でも空の画面が表示されます。
ドキュメントを読みましたが、グループ領域にデータを入力する方法が見つからないようです。
ピープル ピッカーを紹介する方法は次のとおりです。かなり標準:
私は何が欠けていますか?
iphone - iPhone ABAddressBook での読み込み時のパフォーマンスの問題
連絡先の電話番号を対応する ABRecordRef にマッピングするルックアップ テーブルを作成しています (これは、ユーザーがダイヤルした電話番号に基づいて連絡先の名前と写真を効率的に検索できるようにするために必要です)。
残念ながら、500 件の連絡先の場合、すべての連絡先をループ処理してルックアップ テーブルを作成するのに約 4 秒かかるため、アプリケーションの読み込みが非常に遅くなります。
他の誰かがこのような問題を見たことがありますか、または提案された回避策がありますか?
OS V3.0 を実行している 3G iPhone でテストしています。プロジェクトは、ターゲット 'Device 2.1' 用にビルドされています。
コードは次のとおりです。
for ループの前のコードの最初の部分は、実行に 0.2 ~ 0.75 秒しかかかりません (ABAddressBookCopyArrayOfAllPeople を含む)。
最初は外側の for ループに NSLog 行が 1 つしかありませんでしたが、デバイスでテストする前にそれを前処理しました。
問題を確認した後、コードのすべての行の間に NSLog 行を挿入しましたが、どの行も他の行よりも大幅に長い遅延を引き起こしているようには見えませんでした。これらすべてのトレース行を含めると、ルックアップ テーブルの作成に約 50 秒かかり、各行の出力には約 0.01 秒かかり、0.1 ~ 0.2 秒の遅延が発生することがあります (毎回同じコード行ではありません)。
どんなアイデアでも大歓迎です!
Leaks チェッカーを実行したので、メモリ管理の間違いはないと確信しています。また、電話番号に基づいて連絡先を個別に検索する方法もないようです。
(2009 年 11 月 2 日) この問題について Apple にバグを
報告
しました。番号
iphone - ABPeoplePickerNavigationController で ABPersonViewController を正しく使用して連絡先情報を表示するにはどうすればよいですか?
2010 年 9 月 2 日更新: このコードは、iOS 4 の更新時点で機能しなくなりました。内部アサーションで失敗します。「QuickContacts」と呼ばれる iPhone SDK Reference Library で利用できる優れた Address Book API の例が現在あります。
サンプルコードはこちらから入手できます。この問題を解決するのに役立ちます: http://developer.apple.com/iphone/library/samplecode/QuickContacts/Introduction/Intro.html
ユーザーが ABPeoplePickerNavigationControllerから連絡先を選択できるようにする機能をアプリに追加しようとしています。これにより、選択した連絡先に対応する ABPersonViewControllerが表示されます。その時点で、ユーザーが連絡先の電話番号をクリックして、アプリがカスタム動作で応答できるようにしたいと考えています。
ABPeoplePickerNavigationControllerは正常に動作していますが、ABPersonViewControllerを表示する際に問題が発生しています。ABPersonViewControllerを画面上でアニメーション化することはできますが、連絡先の写真、名前、および会社名しか表示されません。連絡先の他のフィールドは表示されません。
ABPersonViewControllerの「displayedProperties 」要素を使用して、プログラムに電話番号を表示するように指示しています。これにより、奇妙な動作が発生します。電話番号が割り当てられていない連絡先を選択すると、背景に「電話番号なし」と書かれた連絡先が表示されますが (ご想像のとおり)、電話番号が割り当てられている連絡先を選択すると、空白の連絡先ページ (「電話番号なし」テキストなし)。
ABPeoplePickerNavigationController デリゲートクラスのメソッドを次に示します。これは、 ABPersonViewController インターフェイスを実装するPersonViewControllerクラスを作成するために使用しています。
これが私のPersonViewController.hヘッダー ファイルです。
最後に、選択した連絡先を表示するためのABPersonViewControllerを作成するPersonViewController.mを次に示します。
クリック可能な電話番号フィールドではなく、この空白の連絡先画面が表示される理由について、誰か知っている人はいますか?
わかりました、問題の発見に近づいていると思います。上記の displayContactInfo 呼び出しのこの部分にあると確信しています。
この行を省略すると、連絡先をクリックしても空白の画面しか表示されません。ABPeoplePickerNavigationController は、PersonViewController を NavigationController スタックにプッシュしています。その後、PersonViewController は ABPersonViewController オブジェクトをインスタンス化しますが、何らかの理由で ABPersonViewController が NavigationController スタックに正しく追加されません。
PersonViewController だけでなく、ABPersonViewController をスタックに追加する方法を知っている人はいますか?
iphone - ABUnknownPersonViewController を閉じる際の問題。正常に表示されますが、閉じるとアプリがクラッシュします
私のアプリは2つのビューで構成されています。MainView と ResultsView。MainView には入力が必要な UITextField が含まれており、ボタンがタッチされると、ビューが ResultsView に変わります。以下は、それを処理するコードの重要な部分です。
今、ResultsView
いくつかのコンテンツを含むテーブルビューがあります。私がしたいのは、そのテーブルビューの行が選択されたときにABUnknownPersonViewController
、ユーザーが連絡先をアドレス帳に保存できるようにすることです。
だからでResultsViewController.m
:
行を選択すると、ABUnknownPersonViewController
が正しく表示されます。また、送信されたすべての正しい情報が含まれてpersonRecord
おり、[連絡先に追加] ボタンが押されたときに連絡先がアドレス帳に適切に保存されます。しかし、最後のステップで完了(またはキャンセル)ボタンが押されると、かなり悪いクラッシュが発生します。
問題は、起動時に「43453スタックフレームをロードしています...」と表示されるため、デバッガから何も理解できないことです。この手順を停止します。スタック トレースの先頭は次のとおりです。
そして、たくさんあります
教えてください。私が間違っているのは、おそらく少し愚かなことだと確信しています。私はそれを修正するために何時間も試みてきましたが、できません。:(