比方說,我有這個方法:修改對象傳遞到方法
-(void) mofidyObject:(NSArray *)obj;
如何修改到底哪個傳入該數組對象?
我已經看到過這段時間,我知道你需要有一個「&」前綴,但不知道如何。
比方說,我有這個方法:修改對象傳遞到方法
-(void) mofidyObject:(NSArray *)obj;
如何修改到底哪個傳入該數組對象?
我已經看到過這段時間,我知道你需要有一個「&」前綴,但不知道如何。
幾件事:
有一個對象,然後有一個變量指向一個對象。這些是不同的,修改它們的方法是不同的。
如果你想修改對象(它的內容),它使用你在代碼中的正常傳遞機制 - 除了NSArray不是可變對象。但是如果你通過一個NSMutableArray來代替,那隻會起作用。
如果要修改變量的內容,使其指向不同的對象,則必須將其地址傳遞給該方法。這就是「&」運營商發揮作用的地方。
-(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
}
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它將不允許的。
在這種情況下,像這樣的外部參數是Cocoa中最好的處理方式的情況相對較少。看看你應該考慮這種模式的線索框架,例如NSError
處理。
其他問題,如this one已經解決了這種模式與可變數組。
也就是說,Objective-C只是C上的一層,可以做任何C可以做的事情。要通過引用傳遞指針刷了 - 看看這個excellent tutorial(太虛大師,由烏利Kusterer)
您可以在任何修改這個'obj'因爲它只是一個指針傳遞給烏爾對象這個方法.. – vishy