【问题标题】: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 访问