【发布时间】:2023-03-29 09:04:01
【问题描述】:
iOS 内存管理对我来说仍然是一个奇怪的东西,但这也是我最感兴趣的方面,所以我在这里寻求一些关于我的代码的帮助。
我尝试实例化一个 NSDictionary 对象,我使用它然后我想释放但我得到一个对象释放错误,这是代码:
if ([jsonArray count] > 0) {
NSDictionary *commentDictionary = [[NSDictionary alloc]init];
int i;
for (i = 0; i < [jsonArray count]; i++) {
commentDictionary = [jsonArray objectAtIndex:i];
NSLog(@"debugging message here"]);
commentLabel.text = [commentDictionary objectForKey:@"commentText"];
//[commentDictionary retain];
}
//[commentDictionary release];
commentDictionary = nil;
NSLog(@"NSDictionary retainCount = %d",[commentDictionary retainCount]);
}
没什么特别的,我从一个数组中填充了一个字典,在我的代码中你可以看到我试图释放,但由于错误而被注释掉了。 为什么我不能释放字典?
除了将 NSDictionary 设置为 nil 并在 retainCount 中返回零和释放(应该使计数为 -1)之间有什么区别?
非常感谢您在此主题上提供的任何帮助。
法布里齐奥
【问题讨论】:
-
您的代码表明对基于指针的内存管理缺乏了解。请阅读boredzo.org/pointers,了解指针是什么以及它对您的代码意味着什么。
标签: iphone objective-c cocoa nsdictionary