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

Pra*_*d G 1 iphone nsmutablearray uicolor ios

当我将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.....
Run Code Online (Sandbox Code Playgroud)

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

请举例说明.提前致谢.

小智 6

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

此外,该对象不能nil或NSMutableArray本身将抛出异常.

  • `[array addObject:color4]`将调用[color4 retain],如果它是nil,则调用retain是可以的,但正如@danielbeard所说,会有一个异常.但是对像垃圾这样的无效对象调用retain会引发"SIGBRT". (3认同)