Ниже код не компилируется для меня:Доступ быстрые методы расширения класса внутри исходного класса
import Foundation
@objc public protocol MyProtocol {
func protocolMethod(parameter: (String)) -> String
func anotherProtocolMethod() -> Int
}
class MyClass: NSObject {
var myValue = self.anotherProtocolMethod()
}
extension MyClass: MyProtocol {
func protocolMethod(parameter: (String)) -> String {
return ""
}
func anotherProtocolMethod() -> Int {
return 1
}
}
Ошибка возникает на линии MyValue назначен, он читает: об ошибке: значение типа «NSObject - >() -> MyClass не имеет другого пользователяProtocolMethod
Есть ли способ сделать эту работу без перемещения myValue в расширение класса?
Хорошим решением является объявление свойства 'lazy'. См. Ответ на связанный вопрос. – matt
Или используйте вычисленное свойство вместо хранимого свойства. См. Мою книгу для дальнейшего обсуждения: http://www.apeth.com/swiftBook/ch04.html#_properties – matt
Спасибо за ответ. Вычисленное свойство readonly отлично работает для моего использования. –