Как передать указатель на ссылку в качестве аргумента функции-Objective C - PullRequest
1 голос
/ 02 мая 2011

В C ++ мы передадим указатель на функцию как

bool getData(REMOTE_ID msId,RsEvent*& pEvent);

Как объявить это в Objective C?

// ?
-(BOOL)getData:(REMOTE_ID)msId withEvent:(RsEvent*)pEvent;

Но мне нужно использовать указатель для ссылки (RsEvent*&).Я использовал только указатель (RsEvent*) в качестве типа данных здесь.

Ответы [ 2 ]

2 голосов
/ 02 мая 2011

Вам нужно использовать указатели для имитации ссылки в C (и Objective-C):

-(BOOL)getData:(REMOTE_ID)msId withEvent:(RsEvent**)pEvent {
   // do stuff with msId and *pEvent
}

и передать аргумент в качестве указателя:

RsEvent* event;
BOOl res = [foo getData:msId withEvent:&event];
...
1 голос
/ 02 мая 2011

(Кстати, вы имеете дело не с указателем на ссылку, а со ссылкой на указатель.) Разве вы не можете просто использовать аннотацию того же типа в методе Objective-C?

- (BOOL)getData:(REMOTE_ID)msId withEvent:(RsEvent*&)pEvent;

Я думаю, что это должно работать, но если это не так, вы можете вместо этого использовать указатель на указатель:

- (BOOL)getData:(REMOTE_ID)msId withEvent:(RsEvent**)pEvent {
  useEvent(*pEvent); // when using the event, you need to dereference the pointer
}

Отправьте сообщение -getData:withEvent: с адресом вашего мероприятия:

[obj getData:SOME_ID withEvent:&event];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...