gpt4 book ai didi

objective-c - 试图替换已弃用的 loadnibnamed :owner

转载 作者:太空狗 更新时间:2023-10-30 03:54:03 26 4
gpt4 key购买 nike

我正在尝试替换已弃用的

[NSBundle loadNibNamed:@"Subscriptions" owner:self];

用这个代替(我唯一能找到的是等价的)

[[NSBundle mainBundle] loadNibNamed:@"Subscriptions" owner:self topLevelObjects:nil];

但是对话框会弹出并立即消失,而不是像处理已弃用的调用那样保持打开状态。

这段代码在这样的 View Controller 中。

- (id)init{
self = [super init];
if (self) {
//[NSBundle loadNibNamed:@"Subscriptions" owner:self];

[[NSBundle mainBundle] loadNibNamed:@"Subscriptions" owner:self topLevelObjects:nil];
}
return self;

我是这样从 appdelegate 调用它的。

SubscriptionsViewController *subscriptionsViewController = [[SubscriptionsViewController alloc] init];
[subscriptionsViewController.window makeKeyAndOrderFront:self];

有什么我想念的吗?这对我来说似乎很直接。

最佳答案

出现然后消失的对话框是可能的对象收集的标志 - 强烈引用它将被收集和丢失的对话框。

已弃用的调用保留了 nib 中顶级对象的所有权,而新调用则没有。

因此引用顶级对象的所有者对象的属性必须是强的,否则你需要保留顶级对象数组。这与此类属性较弱的旧建议相反。

在 nib 中引用非顶级对象的属性仍然很弱。

关于objective-c - 试图替换已弃用的 loadnibnamed :owner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19602390/

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