2009-11-17 126 views
0

我有一种iPhone编程的情况。我有一个包含另一个对象(对象B)的对象(对象A)。有没有办法从对象B中引用对象A?如果是这样,我该怎么做?对象参考

+0

难道这问题的标题应该改进?这正是我正在寻找的,但标题使它很难找到。我没有足够的代表(我认为?)来编辑他人的问题 - 或者说这是一种mod的力量? – Drarok

回答

2

你可以有类相互引用,就像这样:

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 

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的一个属性'assign'而不是'retain',只是为了避免保留周期。 –

3

号对象B都需要有自己的指针对象A