Objective c 如何在iOS中释放阵列内存?

Objective c 如何在iOS中释放阵列内存?,objective-c,memory-management,Objective C,Memory Management,我创建了150个UIWebView并存储在名为myArray的NSArray中。使用这些WebView后,我不需要这150个WebView。然后我创建了另外100个UIWebView并存储在myArray中。我认为前150个网络视图将自动取消分配。但当我签入仪器时,有250个web视图处于活动状态。如何手动释放内存?我正在使用ARC。因此,我无法使用释放方法。请建议。使用: NSMutableArray*webview=[NSMutableArray new]; 对于(NSInteger i=0

我创建了150个UIWebView并存储在名为myArray的NSArray中。使用这些WebView后,我不需要这150个WebView。然后我创建了另外100个UIWebView并存储在myArray中。我认为前150个网络视图将自动取消分配。但当我签入仪器时,有250个web视图处于活动状态。如何手动释放内存?我正在使用ARC。因此,我无法使用释放方法。请建议。

使用:

NSMutableArray*webview=[NSMutableArray new];
对于(NSInteger i=0;i<150;i++)
[webViews addObject:[self-createWebView]];
[网络视图删除所有对象];
对于(NSInteger i=0;i<100;i++)
[webViews addObject:[self-createWebView]];

围绕使用UIWebView的代码创建一个自动释放池。大概是这样的:

@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

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


顺便说一句,UIWebView是一个非常沉重的对象。您可以考虑使用一个UIWebVIEW,并将NSURLS存储在数组中,根据需要将它们加载到UIWebVIEW中。除非您对任何WebView/
NSArray
进行循环引用,否则ARC应该很好地管理它。除了从阵列中删除web视图外,如果您已将它们添加到视图中,您是否已将它们从其superview中删除?与此问题的主题无关,但是为什么要使用new而不是alloc init呢?@LordZsolt可以保存键入,而且看起来更整洁;否则,这两种样式是相同的。
@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