如何在iOS中释放数组的内存?

时间:2014-04-28 12:00:20

标签: objective-c memory-management

我创建了150个UIwebviews并存储在一个名为myArray的NSArray中。使用这些webview后,我不需要这150个webview。然后我创建了另外100个UIWebViews并存储在myArray中。我认为首先会有150个网页视图自动解除分配。但是,当我检查仪器时,250个网络视图仍然存在。如何手动释放内存?我正在使用ARC。所以我无法使用发布方法。请告知。

3 个答案:

答案 0 :(得分:1)

使用[NSMutableArray removeAllObjects]

NSMutableArray *webViews = [NSMutableArray new];

for (NSInteger i = 0; i < 150; i++)
    [webViews addObject:[self createWebView]];

[webViews removeAllObjects];

for (NSInteger i = 0; i < 100; i++)
    [webViews addObject:[self createWebView]];

答案 1 :(得分:1)

将对象添加到数组时,它会被保留 - 因此您需要清空数组以释放对象。

顺便说一句,UIWebView是一个非常重的对象。您可以考虑使用一个 UIWebView,并将NSURL存储在数组中,并根据需要将它们加载到UIWebView中。

答案 2 :(得分:0)

围绕使用UIWebViews的代码创建自动释放池。像这样:

@autoreleasepool {
    // Create and use your UIWebViews here.  Put them into an array, do whatever you want with them
}

// When you exit the @autoreleasepool block, the objects you created inside the block will be freed