1

只是单元测试的另一个问题。在我做单元测试的一个 iOS 项目中,有必要使用 UIWebView。当我创建一个- (void)setUp;或任何测试方法时,整个测试在没有任何进一步信息的情况下崩溃。调试导航器仅显示:0 pthread_mutex_lock

我根本不使用锁或多线程做任何事情。我试图用同样的错误同步它。我还尝试了一个具有相同行为的完全不同的新项目。仅当我尝试分配 UIWebview 时才会发生这种情况。我尝试分配 UIViews 以及 UIViewController 并且一切都很好。

所以我的问题是:

  1. 为什么会这样?
  2. 我该如何解决这个问题?

我在这里看到的唯一方法是使用像 OCMock 这样的框架来模拟 Web 视图。但我想知道为什么我的测试会以这种方式崩溃......

在此先感谢,汤姆特

更新:我在 Xcode 5 和 Xcode 4 中仍然存在这个问题。我尝试使用带有 OCMock 的模拟,但我没有摆脱原始 UIWebView 的代表。如果有人有一个如何与所有代表一起使用模拟的例子,请随时告诉我......

4

1 回答 1

0

我在搜索类似问题时发现了这个线程,其中使用 pthread 互斥锁在 pthread_mutex_lock()、pthread_mutex_trylock() 等期间因 EXC_BAD_ACCESS + EXC_ARM_DA_ALIGN 崩溃。它影响了我的几个 iOS 设备,但在模拟器中运行良好,在其他一些设备上iOS 设备,甚至在一些以前的版本上。这是一个耗时且非常令人沮丧的问题,最终可能是编译器问题。

后来我在这里找到了解决方案:http: //aleksmaus.blogspot.com/2012/03/excbadaccess-error-with-excarmdaalign.html

基本上,您需要确保任何 pthread_mutex_t 都是通过指针传递的,而不是对它们进行赋值。我不明白为什么编译器会搞砸,但事实就是如此。

于 2014-08-27T21:28:27.440 回答