我在用于测试的类方法中有以下代码:
NSMutableDictionary * temp = [[NSMutableDictionary alloc] init];
[temp setObject:@"4" forKey:@"Interval"];
interval = [temp objectForKey:@"Interval"];
[temp release];interval是我的实例变量:
NSString * interval;以及它的getter方法(它不是属性):
- (NSString *) getInterval {
return interval;
}在其他一些类中,我尝试使用方法getInterval,如下所示:
NSString * test = [MyObject getInterval];getInterval返回了正确的4值,我在调试器中看到了它。我不能理解,因为据我所知,NSMutableDictionary temp应该释放指向interval实例变量的指针。为什么会这样呢?
发布于 2011-06-08 19:58:44
@"4"是一个文字/常量NSString对象,而文字/常量NSStrings永远不会被释放-这就是为什么你仍然可以引用该字符串,即使理论上它应该已经被释放了(假设字典是唯一的所有者)。
当然,这并不意味着您不应该遵循适当的内存管理规则。如果您想保留interval,那么您应该保留或复制它,可能是通过声明的属性。
https://stackoverflow.com/questions/6278291
复制相似问题