Ios swift中的关闭属性错误访问(EXC_错误访问)
我有Ios swift中的关闭属性错误访问(EXC_错误访问),ios,xcode,swift,initialization,closures,Ios,Xcode,Swift,Initialization,Closures,我有测试类,带有按钮动作可选关闭: class Test : CustomViewFromXib { var button_action : (() -> ())? @IBAction func button_pressed(sender: AnyObject) { if let action = button_action { action() } } } 这就是我如何使用这个类: let test_vi
测试
类,带有按钮动作
可选关闭:
class Test : CustomViewFromXib {
var button_action : (() -> ())?
@IBAction func button_pressed(sender: AnyObject) {
if let action = button_action {
action()
}
}
}
这就是我如何使用这个类:
let test_view = Test(frame: CGRect.nullRect)
self.view.addSubview(test_view)
test_view.button_action = {
() -> () in
print("test")
}
我在第行得到EXC\u BAD\u ACCESS
错误:
test_view.button_action = {
() -> () in
print("test")
}
我不知道为什么,因为我只想设置初始值。有可能那样做吗
更新:
我明白,没有一个属性或方法不能从我的对象调用。不仅仅是闭包,还有字符串(例如)
更新2:
这是我的代码的一个小例子,它再现了这个问题。我想我对初始化者有问题。。。
(XCode 6 Beta 5)编写代码
let test_view = Test(frame: CGRect.nullRect)
self.view.addSubview(test_view)
test_view.button_action = {
() -> () in
print("test")
}
而不是
let test_view = Test(frame: CGRect.nullRect)
self.view.addSubview(test_view)
test_view.button_action = { [unowned self]
() -> () in
print("test")
}
下面是确切的详细理论答案
我用类似的代码创建了一个测试项目,它对我很有用——但我在interface builder中添加了测试视图(用于连接按钮)。所以我想说,这与设置button_action变量或closureHmm的类型无关。。我试图创建属性test:String=“xxx”并通过test\u view.test=“zzz”访问它,但它也不起作用。我还添加了test()方法,无法调用它。