一个概念性的问题。为什么我的函数调用只在 viewDidLoad 内部起作用?
import UIKit
class ViewController2: UITableViewController, UITableViewDataSource {
@IBOutlet var tableview2: UITableView!
var forceView2 = [Float]()
var stiffView2 = [Float]()
var springNumView2 : NSInteger = NSInteger()
override func viewDidLoad() {
super.viewDidLoad()
println(self.forceView2)
println(self.stiffView2)
println(self.springNumView2)
var Answer = calculate(forceView2, stiffView2, springNumView2)
println(Answer.self)
}
如果将 var Answer = calculate(forceView2, stiffView2, springNumView2) 放在 viewDidLoad 之上,则会出现“ViewController2.type does not have a member named 'forceView2'”的错误。
最佳答案
如果将该行移出方法范围,实际上是将局部变量转换为属性。这样 Answer
属性对所有实例方法都是可见的,但也可以从外部访问。
你的问题是属性是用实例函数的返回值初始化的,它间接引用了 self
- 但 swift 不允许引用 self
在初始化期间,这就是编译错误的原因。
关于ios - Swift 为什么我的函数调用只在 viewDidLoad 中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28297240/