iOS - передача NSMutableArray через метод return - PullRequest
1 голос
/ 28 февраля 2011

Как можно передать NSMutableArray через метод return.

Он проходит через массив «пробелов», поэтому массив из 10 объектов проходит через 10 блоков, но никакой информации, содержащейся в этих объектах, нет.

Заранее спасибо

Редактировать: В основном я создал другой класс, который содержит информацию о пути, потому что мой контроллер стал немного загроможденным. Итак, этот новый класс, который я хочу вызвать метод «create», который возвращает NSMutableArray. Массив прекрасно создается в классе пути, но когда срабатывает оператор return, он пропускает только пробелы, а не значения или даже указатель.

в настоящее время это

return path;

Я пробовал

return &path; 

и это эпически не получается.

Edit2: вот проблема, к которой у меня, к сожалению, есть.

enter image description here

enter image description here

Все еще сбой

звонит

newNode = [newNode copy]; 

вызывает сбой

Ответы [ 2 ]

6 голосов
/ 28 февраля 2011
- (NSMutableArray *) mutableFloobizwits {
  NSMutableArray *array = [NSMutableArray array];
  for (NSInteger i = 0; i < TheAnswerToTheUltimateQuestion; ++i) {
    void(^MyBlock)(void) = ^{
      NSLog(@"captured i: %ld", i);
    };
    MyBlock = [MyBlock copy];  //move the block from off the stack and onto the heap
    [array addObject:[Floobizwit floobizwithWithBlock:MyBlock]];
    [MyBlock release]; //the Floobizwit should've -retained the block, so we release it
  }
  return array;
}
1 голос
/ 28 февраля 2011

Я бы настроил ваш другой класс, который возвращает массив объектов пути, следующим образом:

@implementation PathFactory

- (NSMutableArray*) create
{
    // In your PathFactory object you create an array and make it autorelease so 
    // it becomes the callers responsibility to free the memory 
    NSMutableArray * pathArray = [[[NSMutableArray alloc] init] autorelease];

    // Create a bunch of PathObject objects and add them to the mutable array
    // also set these to autorelease because the NSMutableArray will retain objects
    // added to the collection (ie It is the NSMutableArray's responsibility to ensure
    // the objects remain allocated).
    for (int i = 0; i < numberOfPaths; i++)
        [pathArray addObject:[[[PathObject alloc] init] autorelease]];

    // Just return the pointer to the NSMutableArray. The caller will need to 
    // call the retain message on the pointer it gets back (see next)
    return pathArray;
}

@end

Так в коде вашего звонящего:

// create a tempory PathFactory (autorelease will make sure it is cleaned up when we
// are finished here)
PathFactory * newPathFactory = [[[PathFactory alloc] init] autorelease];
// grab the new array of Path objects and retain the memory. _newPathArray
// is a member of this class that you will need to release later.
_newPathArray = [[newPathFactory create] retain];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...