Как создать анонимный класс протокола в 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
что вы можете использовать (и, следовательно, переопределить реализации по умолчанию).