Где делегат объявлен как член класса?
Это прямо здесь:
@property (_____,nonatomic) id <CoffeeViewControllerDelegate> delegate;
Синтезирован ивар, используемый для реализации свойства (не показано)в приведенном вами коде), но это стандартная практика в наши дни.
Означает ли наследование протокола NSObject протоколом CoffeeViewControllerDelegate, что произойдет проверка во время выполнения, что у делегата есть все методы NSObject?*
Нет, я не думаю, что это должно произойти во время выполнения.Компилятор может это проверить.
Почему необходимо пересылать объявление NSManagedObject?Является ли это общим требованием при использовании Core Data?
Обычно используется предварительное объявление всякий раз, когда вы хотите сослаться на класс, но не должны использовать его интерфейс.Альтернативой является включение всего заголовочного файла, в котором он определен, или зонтичного заголовка для всей платформы.Это только замедлит процесс - все, что заботит компилятор на этом этапе, это то, что NSManagedObject
относится к некоторому классу.