2013-10-21 56 views
1

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

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

所以我的问题是:

  1. 为什么会出现这种情况?
  2. 我该如何解决这个问题?

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

感谢,Tomte

UPDATE: 我还是有这个问题在Xcode 5以及在Xcode 4我试着使用OCMock模拟,但我没有摆脱原始UIWebView的委托。如果任何人有一个例子如何使用与所有代表模拟,然后随时告诉我...

回答

0

我发现这个线程,同时寻找类似的问题,其中使用pthread mutexes崩溃与EXC_BAD_ACCESS + EXC_ARM_DA_ALIGN期间pthread_mutex_lock(),pthread_mutex_trylock()等。它影响了我的iOS设备中的几个,但在模拟器,其他一些iOS设备甚至以前的版本中工作得很好。这是一个耗时且非常令人沮丧的问题,最终可能是编译器问题。

我后来发现这里的解决方案:http://aleksmaus.blogspot.com/2012/03/excbadaccess-error-with-excarmdaalign.html

基本上,你需要确保任何pthread_mutex_t的是通过指针传递,而不是以往任何时候都做对他们赋值。我不明白为什么编译器将这个问题搞砸了,但事实就是这样。