将子视图添加到UIScrollView IBOutlet导致分配放弃内存

时间:2013-04-20 20:45:28

标签: ios memory-management

免责声明:我对iOS开发相对较新。我正在为这个项目使用ARC。

SettingsViewController使用以下代码将HomeViewController作为模态视图显示:

-(void) btnSettings:(id)sender {
    SettingsViewController *settingsViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"SettingsView"];
    [self presentModalViewController:settingsViewController animated:YES];
}

SettingsViewController.h

@interface SettingsViewController : UIViewController

@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;

@end

`SettingsViewController通过以下方式解散自己:

-(void) btnBack:(id)sender {
    [self dismissViewControllerAnimated:YES completion:nil];
}

我有一个名为UIView的自定义UISettingView,它本质上是一个自定义视图,我将其初始化并添加到scrollView IBOutlet

UISettingView *settingsSkin = [[UISettingView alloc] initWithID:1 Title:@"READER SKIN" SettingsKey:kSETTINGSReaderSkin Items:readerSkinSettings Position:CGPointMake(10, 10) Delegate:self]; 
[settingsSkin setNeedsDisplay];
[self.scrollView addSubview:settingsSkin];

一切似乎工作正常,直到我使用Instruments查看分配,我在Home和Settings视图控制器中来回显示以下图像:

enter image description here

我认为问题出在[self.scrollView addSubview:],因为当我删除它时,废弃的内存问题是固定的。但是,我不知道如何解决这个问题。我的意思是,将以编程方式创建的UIView添加到IBOutlet

有什么问题

谢谢。

编辑1

UISettingView接收当前的ViewController作为委托,并将其传递给Global类中的以下类方法

+(UIButton *) getHeaderViewUIButtonWithDelegate:(UIViewController *)delegate {
    UIButton *button= [UIButton buttonWithType:UIButtonTypeCustom];
    [button setBackgroundImage:[UIImage imageNamed:@"menu-icon-default"] forState:UIControlStateNormal];
    [button setBackgroundImage:[UIImage imageNamed:@"menu-icon-roll"] forState:UIControlStateHighlighted];
    [button addTarget:delegate action:@selector(btnHome:) forControlEvents:UIControlEventTouchUpInside];

    return button;
}

编辑2 堆详细信息

enter image description here

0 个答案:

没有答案