我不熟悉C.我有其他人创建了一种方法,有一个是这样的iphone - 释放一个CFDictionary
touchBeginPoints = CFDictionaryCreateMutable(NULL, 0, NULL, NULL);
point = (CGPoint *)malloc(sizeof(CGPoint));
CFDictionarySetValue(touchBeginPoints, touch, point);
我想dealloc的字典现在创建了一个CFDicionary。据我所知,我必须逐字逐一阅读字典中有多少个条目,并且每个条目都是免费的。
像
free((void *)CFDictionaryGetValue(touchBeginPoints, ...));
CFDictionaryRemoveValue(touchBeginPoints, ...);
所以,我怎么遍历通过这个CFDictionary释放储存在那里的每个点,并删除每个字典词条?
感谢您的任何帮助。
我明白你是对的。我试图实现你所说的,我从编译器收到错误。例如,在我看到的免费(价值)行上(“警告:将'free'的参数1从指针目标类型中丢弃限定符”)。那么,您能否告诉我如何添加和删除此字典中的对象,以及如何在实施您的方法后发布字典?请为我的案件专门编码,因为我没有办法在C中推断伪代码并适用于我的案例......我完全不在C中。 – SpaceDog 2010-08-04 06:18:01
要消除警告,只需将free(value)更改为free((void *)value)即可。 一旦你使用这个valueCallback,你可以使用CFRelease(touchBeginPoints)来释放字典,就像@rastersze建议的那样。 您不需要遍历字典的内容。从字典中删除一个对象现在将释放它。请注意,对于其他应用程序来说,这是否是件好事是不可能的。猜测,你在这里复制Erica Sadun,这对尝试一个noob不是一件好事。 – Jeff 2010-08-05 01:08:24
我知道,但埃里卡的例子只是坐在那里做一个我想做的事,而且我永远不需要修改。她在C和C中做了很多事情,并且C融化了我的大脑。我总是试图将所有东西从C/C++转换为Objective-C,但首先我必须了解所做的事情。过去我成功地完成了这个任务,但是这本字典的东西让我很难过。谢谢! – SpaceDog 2010-08-05 09:39:57