NSMutableDictionary内容释放?

6
我在测试类方法中有以下代码:

我在测试类方法中有以下代码:

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个值,我在调试器中看到了这些值。我不明白为什么会这样,因为根据我的理解,interval实例变量的指针应该随着NSMutableDictionary temp一起被释放。为什么会发生这种情况呢?

1个回答

8

@"4" 是一个字面常量 NSString 对象,而字面常量 NSString 永远不会被释放,这就是为什么你仍然可以引用该字符串,即使它理论上应该已被释放(假设字典是唯一的所有者)。

当然,这并不意味着您不应该遵循适当的内存管理规则。如果您想保留 interval ,那么您应该通过声明的属性进行保留或复制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接