ObjC中的参考传递问题

时间:2011-12-06 03:36:51

标签: objective-c

我想在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 个答案:

答案 0 :(得分:2)

这是一个参考。它不会是副本,除非您执行某些操作以使其成为副本(例如使用@property (copy)或发送copy消息)。

答案 1 :(得分:2)

总是通过指针,a.k.a。引用来引用Objective-C中的对象。因此,对象始终通过Objective-C中的引用传递。