两个班级之间的消息传递

时间:2011-08-08 11:02:13

标签: objective-c xcode oop class

我有一个关于通过不同类获取值的基本问题。 我有一个填充数组的classA(如果我打印出来它不是空的)。 我希望加载这个数组 LATER 我想要加载这个数组:我从类A调用一个返回类A的数组的函数。但是在类B中如果我调用我的新数组则为空。 我有点困惑,因为我认为我保留了数组的每个值,但它仍然是空的。我也尝试了很多不同的可能性。我认为它产生了一个基本的OOP语法错误?!

// 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 个答案:

答案 0 :(得分:1)

实际上你是通过调用alloc来创建类A的新对象,所以通过init它可以重新枚举该实例的所有属性值。

你需要什么,如果你在A类上推动B类,那么使用这一行从堆栈中获取现有的A类对象。

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

然后调用此

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