在segue期间,UITapGestureRecognizer作为僵尸崩溃

时间:2013-02-04 01:28:34

标签: xcode ios5 segue uitapgesturerecognizer nszombie

我遇到了一个奇怪的崩溃。我有一个UITableViewController,它使用上下文转换到另一个tableview控制器。

单击一个单元格时,我收到此消息的崩溃:

[UITapGestureRecognizer retain]: message sent to deallocated instance 0x8700af0

所以我跑了僵尸乐器,这就是它所展示的内容:

#   Address Category    Event Type  RefCt   Timestamp   Size    Responsible Library Responsible Caller
0   0xf5f36c0   UITapGestureRecognizer  Malloc  1   00:04.128.790   80  UIKit   UINibDecoderDecodeObjectForValue
1   0xf5f36c0   UITapGestureRecognizer  Retain  2   00:04.128.807   0   UIKit   -[UIRuntimeConnection initWithCoder:]
2   0xf5f36c0   UITapGestureRecognizer  Retain  3   00:04.128.880   0   UIKit   UINibDecoderDecodeObjectForValue
3   0xf5f36c0   UITapGestureRecognizer  Retain  4   00:04.128.959   0   UIKit   -[UIRuntimeConnection initWithCoder:]
4   0xf5f36c0   UITapGestureRecognizer  Retain  5   00:04.129.007   0   UIKit   UINibDecoderDecodeObjectForValue
5   0xf5f36c0   UITapGestureRecognizer  Retain  6   00:04.129.017   0   UIKit   UINibDecoderDecodeObjectForValue
6   0xf5f36c0   UITapGestureRecognizer  Retain  7   00:04.129.079   0   UIKit   -[UINib instantiateWithOwner:options:]
7   0xf5f36c0   UITapGestureRecognizer  Release 6   00:04.129.111   0   UIKit   -[UINibDecoder finishDecoding]
8   0xf5f36c0   UITapGestureRecognizer  Release 5   00:04.129.124   0   UIKit   -[UINibDecoder finishDecoding]
9   0xf5f36c0   UITapGestureRecognizer  Release 4   00:04.129.130   0   UIKit   -[UINibDecoder finishDecoding]
10  0xf5f36c0   UITapGestureRecognizer  Release 3   00:04.129.135   0   UIKit   -[UINibDecoder finishDecoding]
11  0xf5f36c0   UITapGestureRecognizer  Release 2   00:04.129.139   0   UIKit   -[UIRuntimeConnection dealloc]
12  0xf5f36c0   UITapGestureRecognizer  Release 1   00:04.129.144   0   UIKit   -[UIRuntimeConnection dealloc]
13  0xf5f36c0   UITapGestureRecognizer  Release 0   00:04.130.131   0   Foundation  __NSFireDelayedPerform
14  0xf5f36c0   UITapGestureRecognizer  Zombie  -1  00:04.131.132   0   UIKit   -[UINib instantiateWithOwner:options:]

tapGestureRecognizer通过IB添加,声明为弱。有人建议不要在ViewDidUnload中将其设置为nil,所以我对此进行了评论。

现在,如果我转到选项卡控制器中的另一个选项卡并在那里做一些segues并返回到遇到崩溃的第一个表视图控制器,则没有崩溃,一切都完美无缺。

同样在崩溃的控制器中,我显示了两种不同类型的对象,一些只是文本,一些是图像。只有图像崩溃。文本单元格很好。

我在iOS5& iOS5.1。在手机和模拟器上都会发生。这不会在iOS6设备或iOS6.1模拟器上崩溃。

有谁知道这里发生了什么?

3 个答案:

答案 0 :(得分:3)

我有同样的问题。我有一个静态表视图,我正在使用我的菜单,将其转换为其他视图。只有我手势识别器的视图在iOS 5中不起作用,但在iOS 6中工作得很好。最初我只有动作的IBOutlets,而不是实际的手势识别器本身。我为识别器本身添加了IBOutlets,现在我没有得到任何僵尸:)

-Rojuinex

答案 1 :(得分:0)

到目前为止,解决方案是从我正在搜索的控制器中删除手势识别器,这似乎导致了问题。

答案 2 :(得分:0)

删除在Xib或故事板中实现的UITapGestureRecognizer,并使用代码实现它。它的工作正常所有OS版本。