完全dealloc NSMutableDictionary / NSObject

时间:2016-03-14 03:10:25

标签: ios objective-c iphone memory-management nsdictionary

我正在从服务器检索大量数据,我必须快速初始化并取消分配NSMutableDictionary

我会使用核心数据,但要求说我必须使用一个已分配的对象来快速存储传入的JSON数据,将其保存到NSUserDefaults并完全删除它。这将在一段时间内在后台进程中多次发生。

测试是在iPhone 6S(不是模拟器)上进行的测试

我测试了一个完全裸露的"单视图应用程序"结果是:

First Test

你可以看到一块骨头"单一视图应用程序"消耗9MB内存。

然后我在NSMutableDictionary上进行了测试。我的测试是用数据初始化,删除所有对象,然后恢复RAM。

字典存储了10,000个微小的值(viewDidLoad - 用于测试目的):

_dictionary = [[NSMutableDictionary alloc] initWithDictionary:@{
                      @"Item00000" : [NSNumber numberWithInt:0],
                      ...
                      @"Item10000" : [NSNumber numberWithInt:10000]}];

初始化后 - 我等了两秒钟,删除了所有对象并尝试删除NSMutableDictionary

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    [_largeDictionary removeAllObjects];
    _largeDictionary = nil;
});

的内存消耗显示NSMutableDictionary被删除:

Second Test

有没有人能解决这个问题?我认为当Apple贬值autorelease方法时,这就得到了解决。我的实时环境正在快速初始化相对较大的数据块键值对 - 然后解除分配并准备下一个块。下一个块 可以 存储在不同的NSMutableDictionary中。这就是为什么我需要从内存中完全删除第一个NSMutableDictionary的原因。我已经看到很多关于这个问题的答案,但没有比2013年更新。

更新:@property为:(nonatomic, strong)

提前谢谢。

0 个答案:

没有答案