2011-12-06 29 views
0

我想在ObjC中通過引用傳遞。 下面是這種情況的說明:在ObjC中傳遞引用的問題

// MainClass.h 
@interface MainClass 
{ 
    Board *board; 
    OtherClass *other; 
} 
@end 

// MainClass.m 
@implementation MainClass 

- (id)init 
{ 
    if (self = [super init]) 
    { 
     board = [[Board alloc] init]; 
     other = [[OtherClass alloc] initOtherClassWithBoard: board]; 
    } 
    return self 
} 

@end 

// Other class.h 
@interface OtherClass 
{ 
    Board *refBoard; 
} 
- (void)initOtherClassWithBoard: (Board*)ref; 
@end 

@implementation OtherClass 

- (id)initOtherClassWithBoard: (Board*)ref 
{ 
    if (self = [super init]) 
    { 
     refBoard = ref; 
    } 
    return self; 
} 

@end 

所以我的問題是做我的OtherClass從MainClass保持參照板? 或OtherClass的董事會是一個副本,但不是一個參考。 如果我想做一個參考,那麼我應該如何改變它?

編輯: 如果我添加這兩個類

@property (nonatomic, retain) Board *board; 

回答

2

總是通過指針,又名引用指向Objective-C中的對象。因此,對象是總是在Objective-C中通過引用傳遞。

2

這是什麼的參考。它不會是一個副本,除非你做了一些副本(如使用@property (copy)或發送一條copy消息)。

+0

如果我這樣做呢? @property(nonatomic,retain)? –

+0

@CadrickLoh - '@property(nonatomic,retain)'不會創建對象的副本。 'nonatomic'與如何訪問屬性有關,谷歌或搜索StackOverflow獲取更多信息。 '保留'增加對象的保留計數。 – RyanM