Я пытаюсь сделать что-то вроде этого:Как вернуть пользовательский объект в быстрый инициализатор удобства?
public extension UIImage {
public convenience init(whatever: Int) {
UIGraphicsBeginImageContextWithOptions(...)
//...
let image = UIGraphicsGetImageFromCurrentContext()
UIGraphicsEndImageContext()
return image // <- impossible
}
}
Но это невозможно, так как «ноль» является единственным правильным возвращением для инициализатора ... Как мне это сделать?
Например, метод Objtive-C [UIImage imageNamed:] - это метод класса (который может вернуть все, что он хочет в Objective-C), и он был сопоставлен с быстрым инициализатором UIImage (named :).
это немного грустно, что вы не можете вернуть другой объект в Свифт. У меня есть эта структура с этим сложным контроллером просмотра, определенным в раскадровке. Я хотел бы иметь возможность переопределить 'init()' или даже создать собственный инициализатор, чтобы программно создать экземпляр диспетчера представлений и настроить его все с помощью его представлений/выходов и т. Д. Но единственный способ - использовать заводский метод. , –