Iphone 我在哪里释放这个物体,请帮帮我?

Iphone 我在哪里释放这个物体,请帮帮我?,iphone,Iphone,这是我的示例代码…我正在创建一个类对象作为NSDictionary。这里它显示了漏洞,我在哪里释放了这个对象,它不是释放这个对象的正确位置? 如何释放此对象。 TanX提前 NSDictionary *locationDictionary = [[CJSONDeserializer alloc]deserializeAsDictionary:webresponse error:nil]; NSArray *placemarkArray = [locationDictionary

这是我的示例代码…我正在创建一个类对象作为NSDictionary。这里它显示了漏洞,我在哪里释放了这个对象,它不是释放这个对象的正确位置? 如何释放此对象。 TanX提前

     NSDictionary *locationDictionary = [[CJSONDeserializer    alloc]deserializeAsDictionary:webresponse error:nil];

NSArray *placemarkArray = [locationDictionary valueForKey:@"Placemark"];

NSDictionary *tempDictionary = [placemarkArray objectAtIndex:0];

NSDictionary *pointDictionary = [tempDictionary valueForKey:@"Point"];

NSArray *coordinateArray = [pointDictionary valueForKey:@"coordinates"];
NSNumber *numberLongitude = [coordinateArray objectAtIndex:0];
NSNumber *numberLatitude  = [coordinateArray objectAtIndex:1];

您正在CJSON反序列化程序上调用alloc,因此您拥有它。当你完成了它,你需要释放它。我看不到你在呼吁释放它

变量的其余部分是通过不调用alloc、copy、new或mutableCopy获得的,因此您不拥有它们。它们已经被自动释放。这是惯例

这是必须阅读的内容:

具体而言,规则:

您拥有您创建的任何对象 您可以使用名称以“alloc”、“new”、“copy”或“mutableCopy”开头的方法创建对象,例如alloc、newObject或mutableCopy

您可以使用retain获得对象的所有权 接收到的对象通常保证在其接收到的方法中保持有效,并且该方法还可以安全地将对象返回给其调用程序。在两种情况下使用retain:1在访问器方法或init方法的实现中,获取要存储为属性值的对象的所有权;和2,以防止对象作为其他操作的副作用而失效,如“避免导致正在使用的对象的释放”中所述

当您不再需要它时,必须放弃您所拥有的对象的所有权 通过向对象发送释放消息或自动释放消息,可以放弃对象的所有权。在Cocoa术语中,放弃对象的所有权因此通常被称为“释放”对象

您不能放弃您不拥有的对象的所有权
这只是先前明确规定的政策规则的推论。

如果您刚好在numberLong之后。和数字。只保留它们,直到您完成处理。
如果您不再需要locationDictionary作为一个整体,您现在可以[LocationAdditionary release],但只能在保留或完成所需内容后使用。

CJSONDeserializer类具有方便的构造函数。所以用这个

CJSONDeserializer *jsonDeserializer = [CJSONDeserializer deserializer];
服务器将与该对象反序列化

NSDictionary *locationDictionary = [jsonDeserializer deserializeAsDictionary:webresponse error:nil];

所以你不需要发布它。

TanX用于发送回复。我也在使用它,但它仍然显示泄漏。任何其他发布方法。如果你在示例代码末尾添加代码行[locationDictionary release],但仍然显示内存泄漏,那么漏洞就不在你发布的代码上了。我看不到你发布了你分配的代码。你能用释放电话更新你的代码吗?也许你应该创建反序列化程序,不要像Goumathi建议的那样调用alloc-然后它会自动删除,只有在函数生命周期结束后需要它时才保留…+1在构造函数上没有alloc-然后它会自动删除。只有在需要在该函数的生命周期之外保留它时,才调用retain…只有在需要在该函数的生命周期之外保留它们时,才需要retain。在当前函数返回后,自动删除的项将在将来的某个时候被清除…非常正确,关于他需要保持协调的时间有一个模糊的问题。