无法在xcode中将参数传递给单例函数

时间:2012-10-20 12:16:21

标签: iphone xcode function singleton arguments

我在应用程序中有一个 singleton ,并且需要使用来自另一个类的arguements来调用它的函数,但是当我调用它时,nil争论被传递...这里是代码:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    NSLog([Singleton sharedMySingleton].test);
    NSDictionary *story = [self.filters objectAtIndex: indexPath.row];

    MainAppRecord *record = [[[MainAppRecord alloc]init]retain];
    record.name = [story objectForKey:@"Name"];
    record.searchUrl = [story objectForKey:@"SearchUrl"];
    record.icon = [imageCash objectForKey:indexPath];
    [[Singleton sharedMySingleton] changeMainFilterTo:record atPosition:indexOfFilterToChange];

}

这是Singleton.h及其功能:

@interface Singleton : NSObject {

    NSMutableArray *mainFilters;
    NSString *test;
}

@property (nonatomic, retain) NSMutableArray *mainFilters;
@property (nonatomic, retain) MainAppRecord *filterToChange;

-(void) initWithPlist;
-(void) saveToPlist;
-(void)changeMainFilterTo:(MainAppRecord*)record atPosition:(int)position;
+(Singleton *)sharedMySingleton;

@end



-(void)changeMainFilterTo:(MainAppRecord*)record atPosition:(int)position 
{
    [mainFilters insertObject:record atIndex:position];
}

该应用程序崩溃

2012-10-20 16:24:52.789 TableView [1957:207] - [__ NSArrayI insertObject:atIndex:]:无法识别的选择器发送到实例0x68410f0

由于

1 个答案:

答案 0 :(得分:0)

这与没有被传递的参数或单身人士无关。

您已经在单身人士中声明了一个NSMutableArray属性,但看起来您已经为其分配了一个NSArray。您没有显示您设置它的位置,但看起来您正在从属性列表中加载它 - 默认情况下会创建一个不可变数组。然后尝试插入一个对象 - 这对于不可变数组是可以做的。

确保在创建阵列时创建可变数组。

最简单的方法是找到当前正在分配数组的代码,然后改为制作可变副本:

self.mainFilters = [[NSKeyedUnarchiver unarchiveObjectWithData:other] mutableCopy];