gpt4 book ai didi

iphone - 使用 loadNibNamed 会导致内存泄漏

转载 作者:行者123 更新时间:2023-12-03 21:10:49 26 4
gpt4 key购买 nike

由于某种原因,使用 loadNibNamed: 导致内存泄漏。

假设我有接口(interface):

@interface Step : UIViewController
{
IBOutlet UIView *keyPadPopupView;
}
@property (nonatomic, assign) IBOutlet UIView *keyPadPopupView;

步骤:

@synthesize keyPadPopupView;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]))
{
[[NSBundle mainBundle] loadNibNamed:@"customNumberKeypad" owner:self options:nil];
[self.view addSubview:keyPadPopupView];
[keyPadPopupView release];
}
return self;
}

- (void) dealloc
{
NSLog(@"dealloc........%@", [self class]);
[super dealloc];
}

我使用以下方法执行初始化:

Step *step = [[Step alloc] initWithNibName:@"StepXib" bundle:nil];
[step release];

我似乎无法弄清楚为什么从未调用 dealloc 方法。在Xib内部,文件的属主是Step,在IB中连接的是keyPadPopupView。

我有什么遗漏吗?

谢谢!

最佳答案

在 iOS 中,连接 IBOutlet 会导致对象被保留(与 OS X 不同)。将 View 添加到 subview 会导致其被保留。所以...

从 Nib 加载 - +1 (1)

添加为 subview - +1 (2)

发布 - -1 (1)

您仍有未完成的保留。

viewDidUnload 是否被调用?通常,您可以在那里释放所有保留的 subview 。

关于iphone - 使用 loadNibNamed 会导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3401847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com