如何在iOS中将UIColor对象添加到NSMutableArray中

时间:2012-08-03 05:48:00

标签: iphone ios nsmutablearray uicolor

当我将UIColor个对象添加到数组中时,我得到了Thread1: Program received signal: “SIGBRT”这个错误。

 NSMutableArray *array =[[NSMutableArray alloc] init];
        UIColor *color1,*color2, *color3,*color4;
        color1 = [UIColor blueColor];
        color2 = [UIColor colorWithHue:0.5 
                            saturation:0.1 
                            brightness:0.2
                                 alpha:1.0];
        color3 = color2;
        [array addObject:color1];//No Problem
        [array addObject:color2];//No Problem
        [array addObject:color3];//No Problem
        [array addObject:color4];//Problem is here.....

当我将前三个对象添加到数组中时没有问题。但是当我添加最后一个对象时,我得到错误。这段代码有什么问题?我应该像前三个对象一样将任何东西分配给第四个对象(color4)吗?有必要吗?为什么呢?......

请举例说明。提前谢谢。

5 个答案:

答案 0 :(得分:6)

在你没有初始化指针(color4)之前,它指向一个未定义的位置,在该位置可能没有对象,只是垃圾。也许它甚至不是一个有效的menory位置。解除引用时,它会在故意情况下崩溃。您需要将其初始化为有效对象。

此外,该对象不能是nil,否则NSMutableArray本身会抛出异常。

答案 1 :(得分:3)

color4未初始化,您尝试在数组中插入nil。像其他颜色一样初始化color4。

答案 2 :(得分:2)

将颜色添加到数组时,Color4为nil。 NSMutableArrays是零终止的。这意味着NSMutableArray中的最后一个元素是nil。您无法手动将nil对象添加到数组中,这意味着将忽略nil对象之后的数据!

以下代码会产生异常:

NSMutableArray *array = [[NSMutableArray alloc] init];

UIColor *color;

[array addObject:color];

*由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'* - [__ NSArrayM insertObject:atIndex:]:object不能为nil'

解决方法是在将color4变量添加到数组之前初始化它。

答案 3 :(得分:0)

尝试:

 UIColor* color1 = [UIColor blueColor];
    UIColor* color2 = [UIColor greenColor];
    UIColor* color3 = [UIColor whiteColor];
    UIColor* color4 = [[UIColor alloc] init];

    NSMutableArray* arrayColor = [[NSMutableArray alloc] initWithObjects:color1, color2, nil ];

    [arrayColor addObject:color3];
    [arrayColor addObject:color4];

答案 4 :(得分:0)

你需要创建第一个UIColor对象并像这样添加数组

  NSArray *mycolorsArray = [[NSArray alloc] initWithObjects:color1, color2, nil];
相关问题