【问题标题】:How do i access an instance variable of a mutable array in another class如何访问另一个类中可变数组的实例变量
【发布时间】:2014-12-14 06:52:03
【问题描述】:

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

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

【问题讨论】:

  • 你能再贴一些代码吗?

标签: objective-c arrays class variables instance


【解决方案1】:

您需要将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
}

【讨论】:

    【解决方案2】:

    这是您可以做到的一种方法。下面假设 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;
    }
    

    myArray(在 myClassA 中实例化)现在可以使用 myClassA->myArray 从 myClassB 访问

    【讨论】:

      猜你喜欢
      • 2013-03-24
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 1970-01-01
      • 2013-04-16
      • 2011-07-26
      相关资源
      最近更新 更多