2009-11-17 178 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