我的应用程序中有一个“神秘”保留,我能够在简化中重现它。 我有一个视图层次结构如下:
当我按 button1 时,会创建类 MyView 的新视图(我们将其命名为以图像显示),并将其作为子视图添加到主视图。 MyView 是 UIView 的直接子类,它只会跟踪保留,释放和自动释放(调用 super ,ofcourse)。因此,带图片的视图会被保留,这没关系。
之后我按 button2 。这就是“神秘”发生的地方。
当我触摸按钮时,在我能想到的任何回调(包括 touchesBegan )被调用之前,带有图像的视图会再次被保留。调用堆栈显示它来自系统命中测试。然后没有发布。也不是自动释放。
在iOS 5模拟器和设备上测试。
看起来我忽略了什么。我做错了什么?
修改 的
发现奇数保留不会破坏任何东西,并且会在适当的时候由iOS发布,例如在设置superview(新的或相同的)时要查看。但我仍然想知道,第二次保留的原因是什么?