2014-12-14 4 views
0

나는 이것을 많이 연구했다. 나는 객관적인 C를 처음 접했을뿐입니다. MyClassA라는 클래스와 MyClassB라는 클래스가있는 경우 그리고 NSMutableArray * myArray가 있고 MyClassA의 initWithName : myArrayName을 사용하여 alloc과 init을 수행합니다. MyClassB에서 myArrayName에 액세스하거나 사용하려면 어떻게합니까?다른 클래스의 변경 가능한 배열의 인스턴스 변수에 액세스하는 방법

그래서 내가 한 것은 MyClassB @implementation {MyClassA * myArrayPointer} 아래에 있으며 myArrayPointer.myArrayName을 사용하여 액세스합니다. 그러면 myArrayName이 컴파일되지만 인쇄되지 않습니다. 이 코드는 모두 의사 코드입니다. 실제 코드가 누군가 질문에 대답하는 데 도움이된다면, 나는 그것을 제출할 것입니다. 도와주세요. 미리 감사드립니다.

MyClassB.h -을 :

+0

당신이 좀 더 코드를 붙여 넣을 수 myClassB에서 액세스 할 수 있습니까? –

답변

0

당신은 다음과 같은 MyClassB에 MyClassB에 myArrayName 값을 보내, 그래서 MyClassB 내에서 하나 개의 문자열 변수를 선언하고 MyClassB의 인스턴스를 생성하고 MyClassA의 변수 값을 설정해야

@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 
} 
0

여기 한 가지 방법이 있습니다. 아래는 MyClassA 및 MyClassB 모두 모두 AppDelegate.h에 applicationWillFinishLaunching

에서 인스턴스화됩니다 가정

#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 :

MyClassB.m210
#import "MyClassA.h" 

@interface MyClassB : NSObject 

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

- (id) initWithClassA:(MyClassA *)classa; 

: (myClassA에서 인스턴스화)

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

    myClassA = classa; 

    return self; 
} 

에서 myArray 이제 myClassA->에서 myArray

관련 문제