2012-11-20 44 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)