0

以下代码无法为我编译:

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 没有成员 anotherProtocolMethod 类型的值

有没有办法在不将 myValue 移动到类扩展中的情况下完成这项工作?

4

1 回答 1

1

这与扩展无关。在任何情况下,这条线都是非法的:

var myValue = self.anotherProtocolMethod() // an instance property

存储的实例属性不能通过调用实例方法直接初始化,因为在初始化时,实例正是尚不存在的。

于 2016-02-15T05:17:03.113 回答