无法将对象添加到静态NSMutableArray

时间:2011-11-16 23:25:50

标签: objective-c static delegates nsmutablearray

我在appDelegate上有一个静态变量,声明如下:

appdelegate.h文件:

+(NSMutableArray*)allBanco;
+(void)setAllBanco:(NSMutableArray*)value;

appdelegate.m文件:

static NSMutableArray * allBanco;

+(NSMutableArray*)allBanco
{
    return allBanco;
}

+(void)setAllBanco:(NSMutableArray*)value
{
    if(allBanco != value)
    {
        [allBanco release];
        allBanco = [value copy];
    }
}

我试图在其他课上接受它 在.m文件:

#import "AppDelegate.h"

    [[AppDelegate allBanco] addObject:testeObj];

我无法理解为什么,我可以记录

NSLog(@"%i",[[AppDelegate allBanco] count]);

然后好了。

我试过了:

    NSMutableArray * temp = [[[NSMutableArray alloc]init]autorelease];
    temp = [AppDelegate allBanco];
    [temp addObject:testeObj];
    [AppDelegate setAllBanco:temp];

和doest工作。

2 个答案:

答案 0 :(得分:3)

考虑到您正确创建了数组,请记住-copy会返回不可变副本,因此您可能会在以后修改它时崩溃。


现在你添加了错误,我确信这确实是问题所在:

  

-[__NSArrayI addObject:]:无法识别的选择器已发送到实例

您尝试在NSArray中添加对象,而不是NSMutableArray。尝试使用-mutableCopy

答案 1 :(得分:2)

您尚未创建allBanco指向的对象。更改方法,以便在尚不存在的情况下创建方法:

+(NSMutableArray*)allBanco
{
    if (!allBanco)
       allBanco = [[NSMutableArray alloc] init];
    return allBanco;
}