Обмен сообщениями между двумя классами - PullRequest
0 голосов
/ 08 августа 2011

У меня есть основной вопрос о получении значений через разные классы. У меня есть classA, который заполняет массив (если я распечатываю его, он не пустой). ПОЗЖЕ в классе B я хочу загрузить этот массив: я вызываю функцию из класса A, которая возвращает массив класса A. Но в классе B, если я вызываю мой новый массив, тогда он равен нулю. Я немного сбит с толку, потому что я думаю, что я сохраняю все значения массива, но он все еще нулевой. Я пробовал также много разных возможностей. Я думаю, что это основная ошибка синтаксиса ООП, которую я создаю?!

// CLASS_A.h

@interface classA {

       NSMutableArray* buoyArray;
 }

@property (nonatomic, retain) NSMutableArray * buoyArray;

-(NSMutableArray*)getArray:(NSMutableArray*)_array;

// CLASS_A.m

...        

-(NSMutableArray*)getArray:(NSMutableArray*)_array {
                _array=buoyArray;
                return _array;   
            }

// CLASS_B.h

#import "CLASS_A.h"


@class classA;
@interface classB ...

classA *mapSource;
NSMutableArray * buoyArray;
        }

@property(nonatomic,retain) classA *mapSource;

// CLASS_B.m

buoyArray=[mapSource getArray:buoyArray];
NSLog(@"%@",buoyArray);

1 Ответ

1 голос
/ 08 августа 2011

На самом деле вы создаете новый объект класса A, вызывая alloc, поэтому init инициирует повторную инициализацию всех значений свойств для этого экземпляра.

Что вам нужно, если вы передвигаете класс B над классом A, извлеките существующий объект класса A из стека, используя эту строку.

mapSource = (ClassA *)[self.navigationController.viewControllers objectAtIndex: [self.navigationController.viewControllers count]-2];

тогда назовите это

buoyArray=[mapSource getArray:buoyArray];
NSLog(@"%@",buoyArray);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...