Ваш метод 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:
он назначает новый массив для nil, а затем метод возвращается без видимого эффекта.Я предлагаю изменить код, где вы его называете:
NSMutableArray *aArray = [NSMutableArray array];
[Util doSomeMagic:aArray];
[aArray count];
, а ваш метод doSomeMagic:
:
- (void)doSomeMagic:(NSMutableArray *)aArray
{
[aArray addObject:@"magic"];
[aArray addObject:@"magic2"];
}
Имейте в виду, что, поскольку я использую класс array
в NSMutableArray возвращенный массив будет автоматически освобожден после [aArray count];
.Конечный код будет выглядеть так:
NSMutableArray *aArray = [[NSMutableArray array] retain];
[Util doSomeMagic:aArray];
[aArray count];
[aArray release];