Как применить [слабое «я»] к быстрой функции (не закрытию)IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как применить [слабое «я»] к быстрой функции (не закрытию)

Сообщение Anonymous »

Предположим, у меня есть сетевая функция, которая имеет завершение, и я использую ее несколько раз в своем потребителе, вот так:

Код: Выделить всё

class Network {
func getNumber(completion: @escaping (Int) -> ()) {
//some network code
completion(5)
}
}

class MyClass {
var num = 0
let network = Network()

func myFunc() {
network.getNumber { [weak self] (number) in
self?.num = number
}
}

func myFunc2() {
network.getNumber { [weak self] (number) in
self?.num = number
}
}

}
и чтобы избежать дублирования кода, я заменяю замыкания одной функцией
вот так:

Код: Выделить всё

class MyClass {
var num = 0
let network = Network()

func myFunc() {
network.getNumber(completion: self.handleData)
}

func myFunc2() {
network.getNumber(completion: self.handleData)
}

func handleData(_ number: Int) -> () {
self.num = number
}
}
Проблема этого подхода заключается в том, что я не могу зафиксировать себя как слабый в функции handleData.

Проблему можно легко избежать, изменив handleData на замыкание следующим образом:

Код: Выделить всё

lazy var handleData: (Int) -> () = { [weak self] in
self?.num = $0
}
Итак, мой вопрос: есть ли способ применить слабую личность для функции, а не только для замыкания?

Подробнее здесь: https://stackoverflow.com/questions/621 ... ot-closure
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»