Как создать анонимный класс протокола в Objective-C

Следующий фрагмент кода на Java. Как мы можем получить анонимные реализации классов в Objective C?

//MyDelegate is an interface

MyDelegate delegate=new MyDelegate() {
@Override
public void onDelegateResponse(int responseType,NSString data)
  {


  }
};

//DFNodesControl is a normal java class
DFNodesControl obj=new DFNodesControl();
obj.makeRequest(delegate,currentNode);

2 ответа

Решение

Я думаю, что вы хотите использовать анонимные классы.

Objective-C не имеет этой точной функции на данный момент. Смотрите вопрос "Objective-C эквивалентен анонимным классам Java в методах классов".

Вы можете создавать блоки в Objective-C, однако. Они работают как обычные функции и могут быть переданы и использованы повторно. В этом случае вам придется изменить свой интерфейс, чтобы принимать блок в качестве делегата вместо объекта. Или вы используете простой класс-обертку; Среди приведенных примеров для этого в вышеупомянутом вопросе SO.

См . Документацию блочного программирования Apple для деталей.

В Objective-C вы создаете класс, который реализует протокол, а затем вы реализуете каждый из обязательных методов, указанных в @protocol,

Не существует реализации по умолчанию для @protocol что вы можете использовать (и, следовательно, переопределить реализации по умолчанию).

Другие вопросы по тегам