Это разумный вопрос, просто чтобы добавить немного к уже даным ответам.
Если вы посмотрите на метод, который напрямую принимает другой метод в качестве аргумента, вы заметите, что он также принимает дополнительный аргумент, объект для вызова метода. Посмотрите на пример вашего блока, и вы увидите, что он ссылается на self
, поэтому ваш блок предоставляет одну и ту же пару значений - метод и объект.
Нет абсолютно никакой причины, по которой Objective-C не мог бы иметь конструкцию, которая бы взяла объект и метод, скажем @block(object, method)
или, проще говоря, просто object.method
, и вернула блок, но у него его нет. Если вы знакомы с C #, вы будете знать, что у него есть такая конструкция для создания делегата , который является его версией блока.