Как назначить обработчик обратного вызова с встроенным методом в Swift? - PullRequest
0 голосов
/ 25 мая 2019

Вот как я реализую встроенное назначение обратного вызова в Objective-C:

self.beforeAdjustViews = ^ (UIView* btnView)
{
    // do something
};

Как мне реализовать то же самое в Swift 5?

Ответы [ 2 ]

2 голосов
/ 25 мая 2019

Вы можете либо напрямую назначить

self.beforeAdjustViews = { (button) in 
    // Write Some Code
}

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

let beforAdjustViewsCallBack: (btnView: UIView) -> Void = { button in 
    // Write Some Code
}

Также имейте в виду, что применяются те же правила для циклов сохранения, поэтому, если вы не хотите сохранять строгую ссылку на self внутри блока, вам нужно будет использовать либо [weak self], либо [unowoned self] в зависимости от вашего варианта использования.

1 голос
/ 25 мая 2019

Можно попробовать

self.beforeAdjustViews = { [weak self] (btnView) in 
 ///
}
...