单元测试的另一个问题。在我的一个iOS项目中进行单元测试,有必要使用UIWebView。当我在- (void)setUp;
或任何测试方法中创建一个时,整个测试崩溃而没有任何进一步的信息。 Debug Navigator仅显示:0 pthread_mutex_lock
我根本不对锁或多线程做任何事情。我试图将它与同一错误同步。我也尝试了一个完全不同的新项目,具有相同的行为。仅当我尝试分配UIWebview时才会发生这种情况。我试图分配UIViews以及UIViewController,一切都很好。
所以我的问题是:
我在这里看到的唯一方法是使用像OCMock这样的框架来模拟Web视图。但我想知道为什么我的测试会以这种方式崩溃......
提前致谢,Tomte
更新: 我在Xcode 5中仍然存在这个问题以及Xcode 4.我试图使用OCMock的模拟但我没有摆脱原始UIWebView的委托。如果有人有一个例子如何对所有代表使用模拟,那么随时告诉我......
答案 0 :(得分:0)
我在搜索类似的问题时发现了这个问题,在pthread_mutex_lock(),pthread_mutex_trylock()等期间使用pthread互斥锁与EXC_BAD_ACCESS + EXC_ARM_DA_ALIGN崩溃等。它影响了我的几个iOS设备,但在模拟器中工作得很好,在其他一些iOS设备上,甚至在以前的一些版本中。这是一个耗时且非常令人沮丧的问题,最终可能是编译器问题。
我后来在这里找到了解决方案:http://aleksmaus.blogspot.com/2012/03/excbadaccess-error-with-excarmdaalign.html
基本上,您需要确保通过指针传递任何pthread_mutex_t,而不是对它们进行值赋值。我不明白为什么编译器搞砸了,但它就是这样。