首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理复杂的多点触摸序列?

如何处理复杂的多点触摸序列?
EN

Stack Overflow用户
提问于 2009-12-14 19:47:19
回答 1查看 1K关注 0票数 2

iPhone应用程序编程指南中的事件处理部分中的示例代码“处理一个复杂的多触觉序列”提供了一个不完整的示例,该示例假定读者知道足够多的空白。我知道的足够多,我不知道,如果不做一些澄清,我就不知道怎么做。

在清单3-6中,我假设touchBeginPointsCFDictionaryRef类型的成员属性。对,是这样?

在同一个例子中,我们使用的是malloc(),因此我假设我们需要在以后的某个时候调用free()。我的问题是我什么时候解放了什么?我应该free()touchesEnded:/touchesCancelled:中的各个点吗?我该怎么做?(我假设我需要在枚举CFDictionaryRef时仔细阅读),还是free(touchBeginPoints);在我的dealloc:方法中?

最后,在清单3-7中有一个compareAddress:方法。我将如何(以及在哪里)实现这一点?

Update找到了指向最后一个的答案

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-14 20:35:51

  • 是的,touchBeginPoints是CFDictionaryRef类型的成员属性。
  • 您不会在CFDictionaryRef的实例上调用空闲,而是调用CFRelease。(CoreFoundation的内存管理与Objective类似,它通过retain/retain语义进行显式引用计数。)
  • 您可能希望阅读"Collection的集合编程主题“,以获得对CFMutableDictionary的更强的感觉。http://developer.apple.com/mac/library/documentation/CoreFoundation/Conceptual/CFCollections/CFCollections.html
  • 至于键的free,您可能希望在创建字典时传递一个自定义的发布回调。在字典本身被释放时,会为字典中的每个元素调用键释放回调。(有关更多信息,请参见CFMutableDictionaryCreate的最后两个参数。)

compareAddress:看起来类似于:

代码语言:javascript
复制
 @interface UITouch (TouchSorting)
 - (NSComparisonResult)compareAddress:(id)obj;
 @end

 @implementation UITouch (TouchSorting)
 - (NSComparisonResult)compareAddress:(id)obj {
     if ((void *)self < (void *)obj) return NSOrderedAscending;
    else if ((void *)self == (void *)obj) return NSOrderedSame;
    else return NSOrderedDescending;
 }
 @end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1903042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档