我遇到了一个奇怪的崩溃。我有一个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模拟器上崩溃。
有谁知道这里发生了什么?
答案 0 :(得分:3)
我有同样的问题。我有一个静态表视图,我正在使用我的菜单,将其转换为其他视图。只有我手势识别器的视图在iOS 5中不起作用,但在iOS 6中工作得很好。最初我只有动作的IBOutlets,而不是实际的手势识别器本身。我为识别器本身添加了IBOutlets,现在我没有得到任何僵尸:)
-Rojuinex
答案 1 :(得分:0)
到目前为止,解决方案是从我正在搜索的控制器中删除手势识别器,这似乎导致了问题。
答案 2 :(得分:0)
删除在Xib或故事板中实现的UITapGestureRecognizer,并使用代码实现它。它的工作正常所有OS版本。