Как передать указатель на ссылку в качестве аргумента функции-Objective C

#objective-c

#objective-c

Вопрос:

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

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

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

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

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

Ответ №1:

Вам нужно использовать указатели для имитации ссылки в 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:amp;event];
...
  

Ответ №2:

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

 - (BOOL)getData:(REMOTE_ID)msId withEvent:(RsEvent*amp;)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:amp;event];
  

Комментарии:

1. @KennyTM @Jonathan: Я попробую использовать объявление. Спасибо, что помогли мне понять. Мне нужно хорошо разобраться с концепциями указателей.