iOS不同的输出是在模拟器中运行还是在设备上运行

时间:2011-06-23 12:58:12

标签: iphone objective-c ios-simulator uiwebviewdelegate viewdidappear

我又一次有一个非常奇怪的问题。无论我是在模拟器上还是在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在<{strong> viewDidAppear方法之后加载

但是在模拟器上webViewDidFinishLoad在<{strong> viewDidAppear方法之前加载

是什么给出了?

编辑:更奇怪的是,只有当我点击第一个加载了具有我的UIScrollView和UIWebView的viewcontroller的单元格时,才会发生这种情况。我点击webViewDidFinishLoad方法的所有后续单元格都在viewDidAppear方法之前加载。

我有办法纠正这个问题吗?

3 个答案:

答案 0 :(得分:2)

您应该考虑数据模拟器上的互联网连接远远优于iPhone设备上的连接。使用同步和多线程时要小心。

答案 1 :(得分:1)

您的线程在手机上以不同的顺序执行,而不是模拟器。这不是一个多线程编程功能的错误。您是在程序中遇到崩溃还是对执行顺序感到好奇?

答案 2 :(得分:0)

模拟器在模拟环境中运行x86编译代码。肯定会有一些差异。

这就是为什么你应该总是在实际设备上进行测试,而不是完全依赖模拟器来测试你的测试结果。