0

私はまだ非常に奇妙な問題を抱えています。アプリケーションをシミュレーターで実行しているか、iPhone で実行しているかにかかわらず、異なる出力が得られます。

次のコンソール ログを参照してください。

iPhone 初回実行、最初のキャリア セルをクリック

2011-06-23 14:47:28.974 Acando[2033:307] 1 - loadView method running
2011-06-23 14:47:29.156 Acando[2033:307] 2 - viewDidLoad method running
2011-06-23 14:47:29.159 Acando[2033:307] 3 - viewWillAppear method running
[Switching to process 12803 thread 0x0]
[Switching to process 11523 thread 0x0]
2011-06-23 14:47:29.689 Acando[2033:307] 4 - viewDidAppear method running
2011-06-23 14:47:29.692 Acando[2033:307] View: UILabel, height: 21.000000
2011-06-23 14:47:29.695 Acando[2033:307] View: UIWebView, height: 400.000000
2011-06-23 14:47:29.851 Acando[2033:307] webViewDidFinishLoad method running
2011-06-23 14:47:29.855 Acando[2033:307] UIWebView dynamic height: 1150.000000
[Switching to process 12547 thread 0x0]

シミュレーターの初回実行、最初のキャリア セルのクリック

2011-06-23 14:46:26.405 Acando[92098:207] 1 - loadView method running
2011-06-23 14:46:26.421 Acando[92098:207] 2 - viewDidLoad method running
2011-06-23 14:46:26.422 Acando[92098:207] 3 - viewWillAppear method running
[Switching to process 92098 thread 0x2003]
[Switching to process 92098 thread 0x207]
2011-06-23 14:46:26.484 Acando[92098:207] webViewDidFinishLoad method running
2011-06-23 14:46:26.485 Acando[92098:207] UIWebView dynamic height: 1150.000000
[Switching to process 92098 thread 0x6703]
2011-06-23 14:46:26.781 Acando[92098:207] 4 - viewDidAppear method running
2011-06-23 14:46:26.782 Acando[92098:207] View: UILabel, height: 21.000000
2011-06-23 14:46:26.783 Acando[92098:207] View: UIWebView, height: 1150.000000

iPhoneでは、メソッドのにメソッドwebViewDidFinishLoadが読み込まれるようです。viewDidAppear

ただし、シミュレーターでは、メソッドのwebViewDidFinishLoadにロードされます。viewDidAppear

何を与える?

編集:さらに奇妙なのは、UIScrollView と UIWebView を持つビューコントローラーをロードする最初のセルをクリックしたときにのみ発生することです。メソッドでクリックした後続のセルはすべて、webViewDidFinishLoadメソッドの前にロードされviewDidAppearます。

これを修正できる方法はありますか?

4

3 に答える 3

2

シミュレーターのインターネット接続はiPhoneデバイスのインターネット接続よりもはるかに優れていることを考慮に入れる必要があります。同期およびマルチスレッドを使用する場合は注意してください。

于 2011-06-23T13:05:39.960 に答える
1

スレッドは、シミュレータとは異なり、電話で異なる順序で実行されています。これはバグではなく、マルチスレッド プログラミングの機能です。プログラムでクラッシュが発生したり、実行順序に興味がありますか?

于 2011-06-23T13:09:46.920 に答える
0

シミュレーターは、シミュレートされた環境で x86 コンパイル済みコードを実行しています。いくつかの違いがあるに違いありません。

これが、テスト結果を完全にシミュレーターに依存するのではなく、常に実際のデバイスでテストする必要がある理由です。

于 2011-06-23T13:01:52.767 に答える