我的类方法中有以下代码用于测试:
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 一起释放。为什么会这样?
最佳答案
@"4"
是一个文字/常量 NSString
对象,而文字/常量 NSStrings
永远不会被释放——这就是为什么你可以仍然引用该字符串,即使它在理论上应该已经发布(假设字典是唯一的所有者)。
当然,这并不意味着您不应该遵循正确的内存管理规则。如果你想保留 interval
那么你应该保留或复制它,可能通过声明的属性。
关于objective-c - NSMutableDictionary 内容发布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6278291/