2016-08-12 2 views
2

Что касается лучших практик, где должен быть объявлен протокол? в родном классе или в отдельном файле?Где протоколы SHOULD должны быть объявлены быстрыми?

В любом случае это будет работать теоретически, но есть ли какие-либо причины для того, чтобы управлять тем или иным способом?

+0

Что вы подразумеваете под «родственным классом»? –

+0

хорошо вопрос! Класс, который будет называть его. например 'someInstance.someDelegateMethod()' –

+0

Итак, вы конкретно говорите о протоколе _delegate_? –

ответ

1

Я следую правилам хранения протокола делегата в файле класса, который содержит свойство делегата.

Следующая схема кода иллюстрирует сохранение протокола с использованием свойства, в котором будет установлен делегат.

MyClass.swift:

protocol MyDelegate: class { 
    func firstDelegateMethod() 
    func secondDelegateMethod() 
} 

class MyClass { 
    weak var delegate: MyDelegate? 
} 

Делегаты являются объектами, которые должны соответствовать протоколу и определяются другими классами, а не тот, содержащий протокол.

Полезно помнить, что делегаты - это те, кто делает работу. Они делают то, что необходимо в том, что объявлено в протоколе.

Это может сбивать с толку отслеживать эти отношения, поскольку протокол можно поместить в любом месте. Если вы следуете примеру шаблону, это упростит жизнь и ваш код станет более управляемым.

+0

Спасибо за ваш ответ Даниэль! Это имеет смысл для меня, если вы не используете этот протокол в нескольких местах. В таком случае, я думаю, имеет смысл разместить его в отдельном классе. Благодаря!! –

+0

Рад, что это помогло @JulianB. И да, имея отдельный класс, это хороший вариант при совместном использовании протокола между несколькими классами. – Daniel

Смежные вопросы