【问题标题】:Memory management of UIGestureRecognizerUIGestureRecognizer 的内存管理
【发布时间】:2012-06-10 08:31:09
【问题描述】:

这里举一个例子,(使用 ARC)

        UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTap:)];

        [subView1 addGestureRecognizer:tapGesture ];
        [subView2 addGestureRecognizer:tapGesture];

问题来了:

subView1 不会响应 tapGesture ,但 subView2 会。

如果我们从 subview2 中删除 tapGesture,subView1 将起作用。

在内存管理方面内部发生了什么?为什么不设计使上面的代码工作?

【问题讨论】:

    标签: ios ios5 memory-management automatic-ref-counting uigesturerecognizer


    【解决方案1】:

    我很确定 iOS 中包含的标准手势识别器一次只能附加到一个视图。我找不到任何明确说明的内容,但如果您查看 UIGestureRecognizer 类,则有一个带有此描述的 view 属性:

    手势识别器附加到的视图。 (只读)

    所以我的猜测是addGestureRecgnizer: 如果它已经附加到一个视图,它将取消附加 reconizer。

    【讨论】:

    • 不,这不完全正确,看看我在网上找到的这个例子net
    • 好的,但这不是 iOS 默认不包含的自定义手势识别器吗?我只是说没有一个标准支持多个视图(但也许 iOS 6 或更高版本会有它们,我不知道)。
    • 我查看了您的 GIT 存储库中的代码(为什么您提交了一个 zip 文件而不是源代码文件?)但我看不出这与此有什么关系?当然,识别器动作可以处理具有多个视图的事物。最初的问题是是否可以使用一个识别器实例来识别多个视图中的手势。
    • 哦..我只是理解错误或以其他方式解释它对不起。
    • Coolcoo,实际上最初的问题是关于内存处理的,但它为什么会这样。
    猜你喜欢
    • 1970-01-01
    • 2011-07-21
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多