你doSomeMagic:
方法需要接收參考陣列,以確保它修改它接收到的對象:
- (void)doSomeMagic:(NSMutableArray *)array
{
// for example, let's remove the last element in the array
[array removeLastObject];
}
我猜你的doSomeMagic:
可能是這樣的(這是不行的,因爲它修改了數組的範圍)的副本:
- (void)doSomeMagic:(NSMutableArray *)array
{
NSMutableArray *newArray = [NSMutableArray arrayWithArray:array];
// for example, let's remove the last element in the array
[newArray removeLastObject];
}
編輯:我看到您已加入doSomeMagic:
代碼。你需要在這裏瞭解通過引用。既然你調用doSomeMagic:
帶有一個nil數組(因爲你聲明aArray
沒有設置它指向任何事後),當doSomeMagic:
運行它分配一個新的數組爲零,然後該方法返回沒有可見的效果。我建議改變,你調用它的代碼:
NSMutableArray *aArray = [NSMutableArray array];
[Util doSomeMagic:aArray];
[aArray count];
和你doSomeMagic:
方法:
- (void)doSomeMagic:(NSMutableArray *)aArray
{
[aArray addObject:@"magic"];
[aArray addObject:@"magic2"];
}
請記住,因爲我使用的NSMutableArray類array
,返回的數組將是在[aArray count];
之後自動釋放。最終代碼如下所示:
NSMutableArray *aArray = [[NSMutableArray array] retain];
[Util doSomeMagic:aArray];
[aArray count];
[aArray release];
更新的魔術方法.... – DNB5brims
我看到的,是無數組問題...謝謝你,艾倫。 – DNB5brims
沒問題。爲了更好地理解這個問題,我建議你學習「傳遞參考」和「傳值」之間的區別:http://maths.cam.ac.uk/undergrad/catam/ccatsl/manual/node50.html –