我对此进行了很多研究。我是目标c的新手,只是想不出来。 如果我有一个名为MyClassA的类和一个名为MyClassB的类。我有一个NSMutableArray * myArray,我在myClassA中使用initWithName:myArrayName分配和初始化。如何在MyClassB中访问或使用myArrayName?
所以我所做的是在MyClassB @implementation {MyClassA * myArrayPointer}下,然后我用myArrayPointer.myArrayName访问它。这会编译但不会打印myArrayName。这都是伪代码,如果我的实际代码会帮助某人回答问题,我会提交。请帮忙。提前谢谢。
答案 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中实例化)