每次iOS应用程序中出现Wepover时,内存分配都会增加

每次iOS应用程序中出现Wepover时,内存分配都会增加,ios,heap,popover,allocation,xcode-instruments,Ios,Heap,Popover,Allocation,Xcode Instruments,我的应用程序有一些问题,我目前正在使用WEPopover库(ARCified)创建一些自定义Popover。然而,每次我呈现一个popover及其对应的视图(由一个视图和一个填充了数组的tableview组成)时,工具中的分配都会增加,即使我只是一次又一次地重新添加相同的popover,它也会增加。我遗漏了什么,或者这是正常的行为,请参见下面的代码。我应该改为使表视图变弱还是什么 目标视图控制器.h #import <UIKit/UIKit.h> #import "AppDelega

我的应用程序有一些问题,我目前正在使用WEPopover库(ARCified)创建一些自定义Popover。然而,每次我呈现一个popover及其对应的视图(由一个视图和一个填充了数组的tableview组成)时,工具中的分配都会增加,即使我只是一次又一次地重新添加相同的popover,它也会增加。我遗漏了什么,或者这是正常的行为,请参见下面的代码。我应该改为使表视图变弱还是什么

目标视图控制器.h

#import <UIKit/UIKit.h>
#import "AppDelegate.h"


@interface ThemesPopOverViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>{
    NSArray *themes;
}
@property (nonatomic, retain) UITableView *tableView;
@end
我从以下位置添加popover:

-(void) settingAct:(UIButton *)sender{
    if (!popover) {
        ThemesPopOverViewController *newView = [[ThemesPopOverViewController alloc] initWithNibName:@"SettingPopOverViewController" bundle:[NSBundle mainBundle]];
        self.popover = [[WEPopoverController alloc] initWithContentViewController:newView];
        [self.popover setContainerViewProperties:[self improvedContainerViewProperties]];
        [self.popover setPopoverContentSize:CGSizeMake(128, 360)];
        [self.popover presentPopoverFromRect:CGRectMake(sender.center.x+12, sender.center.y, 0, 20)
                                      inView:self.window.rootViewController.view
                    permittedArrowDirections:(UIPopoverArrowDirectionUp|UIPopoverArrowDirectionDown|
                                              UIPopoverArrowDirectionLeft|UIPopoverArrowDirectionRight)
                                    animated:YES];

        newView = nil;
    }else{
        [self removePop];
    }
}
以及“删除门”中用于删除弹出框的删除方法:

-(void) removePop{

    [self.popover dismissPopoverAnimated:YES];
    self.popover = nil;
}
基线=没有popover,Heapshot1=添加popover,Heapshot2=popover dissmissed,Heapshot3=再次添加相同的popover,Heapshot4=popover dissmissed

Snapshot    Timestamp   Heap Growth # Persistent
- Baseline -    00:07.464.624   1.59 MB 25041
Heapshot 1  00:11.759.060   50.34 KB    787
Heapshot 2  00:16.278.744   0 Bytes 0
Heapshot 3  00:24.312.874   30.39 KB    608
Heapshot 4  00:28.361.293   288 Bytes   7

在设置sact button~action~方法中,执行如下代码

 if (self.popoverController)
{
[self.popoverController dismissPopoverAnimated:YES];
self.popoverController = nil;
}
else
{
    ThemesPopOverViewController *newView = [[ThemesPopOverViewController alloc] initWithNibName:@"SettingPopOverViewController" bundle:[NSBundle mainBundle]];
    self.popover = [[WEPopoverController alloc] initWithContentViewController:newView];
    [self.popover setContainerViewProperties:[self improvedContainerViewProperties]];
    [self.popover setPopoverContentSize:CGSizeMake(128, 360)];
    [self.popover presentPopoverFromRect:CGRectMake(sender.center.x+12, sender.center.y, 0, 20)
                                  inView:self.window.rootViewController.view
                permittedArrowDirections:(UIPopoverArrowDirectionUp|UIPopoverArrowDirectionDown|
                                          UIPopoverArrowDirectionLeft|UIPopoverArrowDirectionRight)
                                animated:YES];
}
这对我来说很好:)

 if (self.popoverController)
{
[self.popoverController dismissPopoverAnimated:YES];
self.popoverController = nil;
}
else
{
    ThemesPopOverViewController *newView = [[ThemesPopOverViewController alloc] initWithNibName:@"SettingPopOverViewController" bundle:[NSBundle mainBundle]];
    self.popover = [[WEPopoverController alloc] initWithContentViewController:newView];
    [self.popover setContainerViewProperties:[self improvedContainerViewProperties]];
    [self.popover setPopoverContentSize:CGSizeMake(128, 360)];
    [self.popover presentPopoverFromRect:CGRectMake(sender.center.x+12, sender.center.y, 0, 20)
                                  inView:self.window.rootViewController.view
                permittedArrowDirections:(UIPopoverArrowDirectionUp|UIPopoverArrowDirectionDown|
                                          UIPopoverArrowDirectionLeft|UIPopoverArrowDirectionRight)
                                animated:YES];
}