В Swift 1.2 есть новый атрибут с параметрами закрытия в функциях, и в документации говорится:
Это означает, что параметр только когда-либо называется (или передается как @ noescape в вызове), что означает, что он не может продлите время жизни вызова.
В моем понимании, до этого мы могли бы использовать [weak self]
, чтобы не дать замыканию иметь сильную ссылку, например, его класс и self могут быть nil или экземпляром, когда выполняется закрытие, но теперь @noescape
означает, что закрытие никогда не будет выполнено, если класс деинициализирован. Правильно ли я понимаю?
И если я прав, зачем использовать закрытие @noescape
для регулярной функции, когда они ведут себя очень похоже?