Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 尝试替换已弃用的loadnibnamed:owner_Objective C_Macos_Cocoa_Nsbundle - Fatal编程技术网

Objective c 尝试替换已弃用的loadnibnamed:owner

Objective c 尝试替换已弃用的loadnibnamed:owner,objective-c,macos,cocoa,nsbundle,Objective C,Macos,Cocoa,Nsbundle,我正在尝试替换不推荐的 [NSBundle loadNibNamed:@"Subscriptions" owner:self]; 取而代之的是这个(我能找到的唯一等价物) 但是对话框会立即弹出并消失,而不是像处理不推荐的呼叫那样保持打开状态 这段代码位于这样的viewcontroller中 - (id)init{ self = [super init]; if (self) { //[NSBundle loadNibNamed:@"Subscriptions"

我正在尝试替换不推荐的

[NSBundle loadNibNamed:@"Subscriptions" owner:self];
取而代之的是这个(我能找到的唯一等价物)

但是对话框会立即弹出并消失,而不是像处理不推荐的呼叫那样保持打开状态

这段代码位于这样的viewcontroller中

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

        [[NSBundle mainBundle] loadNibNamed:@"Subscriptions" owner:self topLevelObjects:nil];
    }
    return self;
SubscriptionsViewController *subscriptionsViewController = [[SubscriptionsViewController alloc] init];
[subscriptionsViewController.window makeKeyAndOrderFront:self];
}

我是这样从appdelegate调用它的

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

        [[NSBundle mainBundle] loadNibNamed:@"Subscriptions" owner:self topLevelObjects:nil];
    }
    return self;
SubscriptionsViewController *subscriptionsViewController = [[SubscriptionsViewController alloc] init];
[subscriptionsViewController.window makeKeyAndOrderFront:self];

我有什么遗漏吗?对我来说,这似乎是直截了当的

对话框的出现和消失是对象可能被收集的标志-在强烈引用该对话框的情况下,它将被收集和丢失

不推荐使用的调用保留了nib中顶级对象的所有权,而新调用没有

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


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

我在使用
loadNibNamed:owner:topLevelObjects:
时遇到了类似的问题,并且总是出现如下错误

[\uu NSArrayM insertObject:atIndex:]:对象不能为nil',终止时调用了NSException abort()类型的未捕获异常

因为我的顶层对象是零

我最终发现我正在加载的nib文件的Interface Builder版本设置为“Xcode 4.6”。当我将其设置为6.2时,一切又恢复正常


我也遇到了同样的问题,你找到解决方案了吗?那么,解决方案是什么呢?我有一个很好的解决方案,但它仍然存在hiding@Retro-听起来你有不同的问题,如果你有一个强引用,对象将不会被收集。问你自己的问题,给出你的代码的细节,哪里出了问题,你尝试了什么-然后有人可能会帮助你。