2014-01-18 166 views
1

我想用背景线程实现某些功能。我需要将几个元素添加到可变数组中,但我不知道如果我正在将我自己的类的对象包装到数组中。代码以'NsMutableArray无法用类对象初始化'或类似的东西回复我的错误信息。代码如下。你们会找出问题出在哪里,提前感谢很多。如何将类对象添加到nsmutablearray

// Map is my own class 
-(void) toDo:(CGPoint)fromPos toPos:(CGPoint)targetPos aMap:(Map *)aMap 
{ 
    NSMutableArray * buddy = [[[NSMutableArray init]alloc]autorelease]; 
    [buddy addObject:[NSValue valueWithCGPoint:fromPos]]; 
    [buddy addObject:[NSValue valueWithCGPoint:toPos]]; 
    [buddy addObject:(Map *)aMap]; 
    [self performSelectorInBackground:@selector(toDoThreadFunc:) withObject:buddy]; 
} 

-(void) toDoThreadFunc:(NSMutableArray *)anArray 
{ 
    CGPoint fromP = [[anArray objectAtIndex:0] CGPointValue]; 
    CGPoint toP = [[anArray objectAtIndex:1] CGPointValue]; 
    Map * aM = [anArray objectAtIndex:2]; 

    [(Map *)aM performSomething:fromP toPos:toP]; 
} 
+0

语法应为[[NSMutableArray里的alloc]初始化]。你试图初始化,你还没有为它分配一个mmeory ......第一次alloc然后init –

+0

C_X是正确的,你正在为它分配内存之前初始化对象。 (如果不需要在您的APP中使用ARC,您仍然应该继续使用'autorelease')。 – Werner

+0

真的appreiciate都u thx – user3201493

回答

1

你可以用这个

NSMutableArray *array = [[NSMutableArray alloc] init]; 
[array addObject:[yourObject class]]; 

//Later 
Class yourObject = [array objectAtIndex:0UL]; 

感谢尝试

相关问题