2009-11-17 4 views
0

iPhone 용 상황 프로그래밍이 있습니다. 나는 다른 객체 (객체 B)를 포함하는 객체 (객체 A)를 가지고 있습니다. 객체 B에서 객체 A를 참조 할 수 있습니까? 그렇다면 어떻게해야할까요?객체 참조

ClassA.h :

@class ClassB // let the compiler know that there is a class named "ClassB" 

@interface ClassA : NSObject { 
    ClassB *objectB; 
} 

@property (nonatomic, retain) ClassB *objectB; 

@end 

+0

이 문제의 제목이 더 좋은 말로 할 수 있습니까? 이것은 내가 찾고 있던 것이었지만, 제목으로 찾기가 어려웠습니다. 나는 다른 사람들의 질문을 편집하기에 충분한 담당자가 없다. – Drarok

답변

2

당신은 클래스가 다음과 같이 서로 참조 할 수 있습니다 개체 자체 포인터를 가질 필요가 ClassB.h :

@class ClassA; // let the compiler know that there is a class named "ClassA" 

@interface ClassB : NSObject { 
    ClassA *objectA; 
} 

@property (nonatomic, assign) ClassA *objectA; // "child" object should not retain its "parent" 

@end 

ClassA.m :

#import "ClassA.h" 
#import "ClassB.h" 

@implementation ClassA 

@synthesize objectB; 

- (id)init { 
    if (self = [super init]) { 
     objectB = [[ClassB alloc] init]; 
     objectB.objectA = self; 
    } 

    return self; 
} 

@end 

ClassB.m :

#import "ClassA.h" 
#import "ClassB.h" 

@implementation ClassB; 

@synthesize objectA; 

- (id)init { 
    if (self = [super init]) { 
     // no need to set objectA here 
    } 

    return self; 
} 

@end 
+0

그게 효과가있어. 고마워. 하나의 이슈는 @class 지시문에'@class ClassA;와 같은 세미콜론이 있어야한다는 것입니다. – Chris

+0

@class 선언이 수정되었습니다. – gerry3

+3

+1, 제외 사이클을 피하기 위해 B의 A 속성을 '할당'이 아닌 '보유'가 아닌 것을 제외하고는 +1합니다. –

3

번호 개체 B는 A를