2012-11-20 41 views
0

比方说,我有这个方法:修改对象传递到方法

-(void) mofidyObject:(NSArray *)obj; 

如何修改到底哪个传入该数组对象?

我已经看到过这段时间,我知道你需要有一个“&”前缀,但不知道如何。

+0

您可以在任何修改这个'obj'因为它只是一个指针传递给乌尔对象这个方法.. – vishy

回答

3

几件事:

有一个对象,然后有一个变量指向一个对象。这些是不同的,修改它们的方法是不同的。

如果你想修改对象(它的内容),它使用你在代码中的正常传递机制 - 除了NSArray不是可变对象。但是如果你通过一个NSMutableArray来代替,那只会起作用。

如果要修改变量的内容,使其指向不同的对象,则必须将其地址传递给该方法。这就是“&”运营商发挥作用的地方。

0
-(void) mofidyObject:(NSMutableArray **)obj 
{ 
    [*obj addObject:@"love you!"]; 
}  

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:@"Stack", @"Overflow", nil]; 
    [self mofidyObject:&array]; 

    //Don't forget to release after use 
} 
0
NSMutableArray *arrRows=[[NSMutableArray alloc]init]; //suppose you have this NSMutableArray 
[self mofidyObject:&arrRows]; 


} 
-(void) mofidyObject:(NSMutableArray **)obj 
{ 
    self.arrMultiProd=*obj; //Then you can assign pointer refrence to your NSMutableProperty like this 
} 

但根据ARC它将不允许的。

0

在这种情况下,像这样的外部参数是Cocoa中最好的处理方式的情况相对较少。看看你应该考虑这种模式的线索框架,例如NSError处理。

其他问题,如this one已经解决了这种模式与可变数组。

也就是说,Objective-C只是C上的一层,可以做任何C可以做的事情。要通过引用传递指针刷了 - 看看这个excellent tutorial(太虚大师,由乌利Kusterer)