我无法从其他课程中拨打handleRegister
方法。
我创建了一个名为A
的类,其中包含handleRegister
方法:
class A {
static var a:A?
init(){
A.a = self
}
@objc func handleRegister(){
print("Hello method1")
}
}
ViewController
我来自handleRegister
方法的课程:
class ViewController: UIViewController {
@IBOutlet weak private var btnFirst :UIButton?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let obj = A()
btnFirst?.addTarget(obj, action: #selector(obj.handleRegister), for: UIControlEvents.touchUpInside)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
在我的ViewController
课程中我btnFirst
我正在尝试为btnFirst
添加目标,并尝试调用handleRegister
形式为class A
的方法工作正常。
但我的问题是,当我在A类中评论init方法时,我无法调用方法
handleRegister
。任何人都可以告诉我为什么
init
方法对于添加另一个类的按钮目标很重要
答案 0 :(得分:2)
您正在A
中创建viewDidLoad
类对象,该对象将在viewDidLoad之后立即取消分配。在A
类初始化程序中,您通过编写此A.a = self
来创建A的强引用(这就是调用按钮操作的原因)。只需在A
之外创建viewDidLoad
类对象,它就可以正常工作。