如何在另一个类中访问可变数组的实例变量

时间:2014-12-14 06:52:04

标签: objective-c arrays class variables instance

我对此进行了很多研究。我是目标c的新手,只是想不出来。 如果我有一个名为MyClassA的类和一个名为MyClassB的类。我有一个NSMutableArray * myArray,我在myClassA中使用initWithName:myArrayName分配和初始化。如何在MyClassB中访问或使用myArrayName?

所以我所做的是在MyClassB @implementation {MyClassA * myArrayPointer}下,然后我用myArrayPointer.myArrayName访问它。这会编译但不会打印myArrayName。这都是伪代码,如果我的实际代码会帮助某人回答问题,我会提交。请帮忙。提前谢谢。

2 个答案:

答案 0 :(得分:0)

您需要将myArrayName值发送到MyClassB,因此在MyClassB中声明一个字符串变量,然后创建MyClassB的实例,并将MyClassA的变量值设置为MyClassB,如下所示: -

MyClassB.h

@propery(nonAtomic,strong)NSString *name;

MyClassB.m

-(void)someMethod{
NSLog(@"%@",self.name);
}

MyClassA.m

-(void)someMethod{
MyClassB *clsB=[MyClassB alloc]initWithNibName:@"yourXib"];
clsB.name=myArrayName
}

答案 1 :(得分:0)

这是你可以做到的一种方式。下面假设MyClassA和MyClassB都将在applicationWillFinishLaunching中实例化

在AppDelegate.h中

#import "MyClassA.h"
#import "MyClassB.h"

@interface AppDelegate : NSObject <NSApplicationDelegate, NSWindowDelegate>
{
    MyClassA *myClassA;
    MyClassB *myClassB;
}
AppDelegate.m中的

- (void)applicationWillFinishLaunching:(NSNotification *)aNotification
{
    myClassA = [[MyClassA alloc] init];
    myClassB = [[MyClassB alloc] initWithClassA:myClassA];
}

在MyClassA.h中:

@interface MyClassA : NSObject

{
    @public

    NSMutableArray *myArray; // Array will be alloc inited in the init method of MyClassA.m file
}
在MyClassB.h中

#import "MyClassA.h"

@interface MyClassB : NSObject

{
    MyClassA *myClassA; // myClassA will be set in the initWithClassA method
}

- (id) initWithClassA:(MyClassA *)classa;
MyClassB.m中的

- (id) initWithClassA:(MyClassA *)classa
{
    self = [super init];

    myClassA = classa;

    return self;
}
现在可以使用myClassA-&gt; myArray

从myClassB访问myArray(在myClassA中实例化)