Проблемы с передачей по ссылке в ObjC - PullRequest
0 голосов
/ 06 декабря 2011

Я хочу пройти по ссылке в 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 является копией, но не ссылкой. Если я хочу сделать ссылку, то как мне ее изменить?

EDIT: Что если я добавлю это в оба класса

@property (nonatomic, retain) Board *board;

Ответы [ 2 ]

2 голосов
/ 06 декабря 2011

Вы всегда ссылаетесь на объекты в Objective-C через указатели, или ссылки.Следовательно, объекты всегда передаются по ссылке в Objective-C.

2 голосов
/ 06 декабря 2011

Это ссылка. Она не будет копией, если вы не сделаете что-то, чтобы сделать ее копией (например, используйте @property (copy) или отправите сообщение copy).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...