iPhone应用程序编程指南中的事件处理部分中的示例代码“处理一个复杂的多触觉序列”提供了一个不完整的示例,该示例假定读者知道足够多的空白。我知道的足够多,我不知道,如果不做一些澄清,我就不知道怎么做。
在清单3-6中,我假设touchBeginPoints是CFDictionaryRef类型的成员属性。对,是这样?
在同一个例子中,我们使用的是malloc(),因此我假设我们需要在以后的某个时候调用free()。我的问题是我什么时候解放了什么?我应该free()在touchesEnded:/touchesCancelled:中的各个点吗?我该怎么做?(我假设我需要在枚举CFDictionaryRef时仔细阅读),还是free(touchBeginPoints);在我的dealloc:方法中?
最后,在清单3-7中有一个compareAddress:方法。我将如何(以及在哪里)实现这一点?
Update找到了指向最后一个的答案。
发布于 2009-12-14 20:35:51
free,您可能希望在创建字典时传递一个自定义的发布回调。在字典本身被释放时,会为字典中的每个元素调用键释放回调。(有关更多信息,请参见CFMutableDictionaryCreate的最后两个参数。)compareAddress:看起来类似于:
@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;
}
@endhttps://stackoverflow.com/questions/1903042
复制相似问题