我在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工作。
答案 0 :(得分:3)
考虑到您正确创建了数组,请记住-copy
会返回不可变副本,因此您可能会在以后修改它时崩溃。
现在你添加了错误,我确信这确实是问题所在:
-[__NSArrayI addObject:]
:无法识别的选择器已发送到实例
您尝试在NSArray中添加对象,而不是NSMutableArray。尝试使用-mutableCopy
。
答案 1 :(得分:2)
您尚未创建allBanco
指向的对象。更改方法,以便在尚不存在的情况下创建方法:
+(NSMutableArray*)allBanco
{
if (!allBanco)
allBanco = [[NSMutableArray alloc] init];
return allBanco;
}