NSArrayM insertObject:atIndex:]:object不能为nil'

时间:2013-06-10 19:54:14

标签: ios objective-c uiview uiviewcontroller uncaught-exception

经过大量搜索,并尝试使用stackoverflow上的一些解决方案,我没有找到任何可以解决我的错误的答案: 我有一个UIViewcontroller,其名称是WorldViewController。在这个UIViewcontroller中,我初始化了一些UIViews。我想从一些UIViews修改一些依赖于WorldViewController的变量。现在,我把这些行:

WorldViewController * World = [[WorldViewController alloc] init];
它给了我:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'

那么,如何修复呢?它可能来自WorldViewController正在运行的事实吗?那么,如何解决呢?

编辑:我的viewcontroller的init方法

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization

        World1 = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 480.0)];
        [World1 setBackgroundColor:[UIColor blackColor]];
        [self.view addSubview:World1];
        [World1 release];

        [self.view addSubview:ViewPig];
        [self.view addSubview:level1view];
        [self.view addSubview:level2view];
        [self.view addSubview:LoadView];
        [LoadView AnimPigLoadingWith:PigChargement];
        [LoadView AppearLabelLoading];
        [self.view addSubview:FondPauseGrise];
        [self.view addSubview:FondPause];
        [self.view addSubview:BoutonResume];
        [self.view addSubview:BoutonHome];
        [self performSelector:@selector(Chargement) withObject:nil afterDelay:0.5];
        [self performSelector:@selector(ViewAppears) withObject:nil afterDelay:5.5+2.5];
        [self performSelector:@selector(LabelPrevientDepartWithImage:) withObject:Trois afterDelay:9];
        [self performSelector:@selector(LabelPrevientDepartWithImage:) withObject:Deux afterDelay:10];
        [self performSelector:@selector(LabelPrevientDepartWithImage:) withObject:Un afterDelay:11];
        [self performSelector:@selector(LabelPrevientDepartWithImage:) withObject:Go afterDelay:12];
        [self performSelector:@selector(Lancement) withObject:nil afterDelay:(3)];
        [self performSelector:@selector(GestionMaps) withObject:nil afterDelay:(11+2)];
    }
    return self;
}

谢谢!

2 个答案:

答案 0 :(得分:15)

我有类似的问题。我的错误在于没有标记我试图加载的视图作为初始视图控制器。我的猜测是没有初始视图控制器添加到数组,因此对象是零。我不确定回答你的问题有多好,但它对我有用。

enter image description here

答案 1 :(得分:9)

您的问题中没有列出足够的代码来明确显示您出错的位置。

在代码中查找说“insertObject:atIndex:”的所有行。你插入的对象显然是零。

如果找不到这一行,请add a symbolic breakpoint on the symbol "[NSArray insertObject:atIndex:]"(点击链接查看与您的密切相关的问题的答案中的具体说明),看看是否可以在崩溃发生之前打破它。

相关问题