アプリでいくつかの問題が発生しています。現在、WEPopover ライブラリ (ARCified) を使用してカスタム ポップオーバーを作成しています。ただし、ポップオーバーを表示するたびに、それに対応するビュー (ビューと配列が取り込まれたテーブルビューで構成される) は、同じポップオーバーを何度も何度も追加し直すだけでも、楽器の割り当てが大きくなります。私が見逃しているもの、またはこれは通常の動作です。以下のコードを参照してください。代わりにテーブルビューを弱くする必要がありますか?
ThemesPopOverViewController.h
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
@interface ThemesPopOverViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>{
NSArray *themes;
}
@property (nonatomic, retain) UITableView *tableView;
@end
ThemesPopOverViewController.m
#import "ThemesPopOverViewController.h"
@interface ThemesPopOverViewController ()
@end
@implementation ThemesPopOverViewController
@synthesize tableView;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
themes = [[NSArray alloc] initWithObjects:kRegexHighlightViewThemeArray];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(20, 0, self.view.frame.size.width - 40, 350)];
[self.tableView setBackgroundColor:[UIColor clearColor]];
[self.tableView setDelegate:self];
[self.tableView setDataSource:self];
[self.view addSubview:self.tableView];
}
-(void) viewDidAppear:(BOOL)animated{
int item = [themes indexOfObject:theDelegate.codeView.currentTheme];
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:item inSection:0];
[self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1; //count of section
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
//NSLog(@"%d",themes.count);
return [themes count]; //count number of row from counting array hear cataGorry is An Array
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *MyIdentifier = @"MyIdentifier";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:MyIdentifier];
UIView *bgColorView = [[UIView alloc] init];
[bgColorView setBackgroundColor:[UIColor colorWithRed:25/255.0f green:185/255.0f blue:152/255.0f alpha:1.0f]];
[cell setSelectedBackgroundView:bgColorView];
}
[cell.textLabel setFont:[UIFont fontWithName:@"Helvetica" size:16]];
cell.textLabel.text = [themes objectAtIndex: indexPath.row];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"%d", indexPath.row);
[theDelegate.codeView setHighlightThemeFromString:[themes objectAtIndex:indexPath.row]];
[theDelegate.codeView setNeedsDisplay];
themes = nil;
[theDelegate removePop];
}
@end
次からポップオーバーを追加します。
-(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];
}
}
そして、ポップオーバーを閉じるための "theDelegate" の remove メソッド:
-(void) removePop{
[self.popover dismissPopoverAnimated:YES];
self.popover = nil;
}
ベースライン = ポップオーバーなし、Heapshot1 = 追加されたポップオーバー、Heapshot2 = ポップオーバーが却下された、Heapshot3 = 同じポップオーバーが再度追加された、Heapshot4 = ポップオーバーが却下された。
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