Rya*_*opp 5 macos cocoa objective-c nsbundle
我正在尝试替换已弃用的
[NSBundle loadNibNamed:@"Subscriptions" owner:self];
Run Code Online (Sandbox Code Playgroud)
相反(只有我能找到相同的东西)
[[NSBundle mainBundle] loadNibNamed:@"Subscriptions" owner:self topLevelObjects:nil];
Run Code Online (Sandbox Code Playgroud)
但是对话框弹出并立即消失,而不是像使用已弃用的呼叫一样保持打开状态.
这段代码在这样的viewcontroller中.
- (id)init{
self = [super init];
if (self) {
//[NSBundle loadNibNamed:@"Subscriptions" owner:self];
[[NSBundle mainBundle] loadNibNamed:@"Subscriptions" owner:self topLevelObjects:nil];
}
return self;
Run Code Online (Sandbox Code Playgroud)
}
而我正在从appdelegate这样称呼它.
SubscriptionsViewController *subscriptionsViewController = [[SubscriptionsViewController alloc] init];
[subscriptionsViewController.window makeKeyAndOrderFront:self];
Run Code Online (Sandbox Code Playgroud)
有什么我想念的吗?对我来说似乎很直接.
对话框出现然后消失是可能的对象收集的标志 - 通过对对话框的强引用,它将被收集和丢失。
已弃用的调用保留了 nib 中顶级对象的所有权,而新调用则不然。
因此,引用顶级对象的所有者对象的属性必须很强,否则您需要保留顶级对象数组。这与旧建议相反,旧建议中此类属性较弱。
引用 nib 中的非顶级对象的属性仍然可能很弱。
| 归档时间: |
|
| 查看次数: |
4045 次 |
| 最近记录: |