Класс не может использоваться в качестве делегата. Делегат должен быть экземпляром класса. То, что не было создано, не может быть ссылкой. То, что не существует, не может быть использовано.
Пример, который вы даете NSURLConnection
, не использует класс в качестве делегата.
Он использует класс, соответствующий протоколу NSURLConnectionDelegate
, и создает объект этого класса во время инициализации. Магия происходит при инициализации объекта NSURLConnection
.
Это нечто совершенно иное, чем установка .delegate на уже существующий объект.
Setter не создает для вас объект, который использовался для методов протокола, но предполагается, что он снабжен уже созданным объектом.
То же самое относится и к объекту-С.
Заканчивать http://www.iosnomad.com/blog/2014/8/6/swift-nsfetchedresultscontroller-trickery примеры, как использовать NSFetchedResultsController
в Swift класса (ну вы могли бы сделать это в Objective-C очень похожи)
Как это будет работать, хотя? Делегат является экземпляром класса. Я не уверен, что это произойдет. – Fogmeister
В Objective-C я делал это несколько раз. Класс также является объектом, подобным экземпляру класса. –
Вы уверены? Вы уверены, что не выбрали синглтон или что-то подобное в качестве делегата? – Fogmeister