viewDidLoad中的EXC_BAD_ACCESS(code = 1,address = 0x16fc5da60)

时间:2018-05-24 07:09:14

标签: swift memory-management memory-leaks uipickerview viewdidload

在我的ViewController中,我有15个PickerView和15个文本字段。在文本字段编辑确实开始功能我正在创建适当的选择器视图。在我的viewDidLoad方法中,首先我将使用以下代码为其委托和数据源提供。

self.firstPicker = UIPickerView(frame:CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 216))
self.firstPicker.delegate = self
self.firstPicker.dataSource = self


//When text field editing did begin function called following is executing.
    func pickUpFirstPicker(_ textField : UITextField) {

self.kodPicker.backgroundColor = UIColor.white
textField.inputView = self.kodPicker

// ToolBar
let toolBar = UIToolbar()
toolBar.barStyle = .default
toolBar.isTranslucent = true
toolBar.tintColor = UIColor(red: 92/255, green: 216/255, blue: 255/255, alpha: 1)
toolBar.sizeToFit()

// Adding Button ToolBar
let doneButton = UIBarButtonItem(title: "OK", style: .plain, target: self, action: #selector(FiltreVC.pickerDoneClick))
let spaceButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let cancelButton = UIBarButtonItem(title: "CANCEL", style: .plain, target: self, action: #selector(FiltreVC.pickerCancelClick))
toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
toolBar.isUserInteractionEnabled = true
textField.inputAccessoryView = toolBar
    }


@objc func pickerDoneClick() {
    // 400 lines of if else statement

if (Services.list[sampleIndex].pageName == "XYZ" ||
    Services.list[sampleIndex].pageName == "ABC") {
                if (selected == 1) {
                //
                    firstView.isHidden = true
                    secondView.isHidden = true
                    thirdView.isHidden  = false
                } else if (selected == 2) {
                    firstView.isHidden = false
                    secondView.isHidden = false
                    thirdView.isHidden = true
                    firstPicker.selectRow(0, inComponent: 0, animated: true)
                    pickerDoneClick()
                }
            }

}

在给出选择器视图的委托和数据源之后,我正在调用一个函数(仍然在我的viewDidLoad中),它是大约400行if-else语句。根据正确的if语句,它选择一个具有selectRow函数的选择器,然后它调用我上面提到的函数pickerDoneClick。如果我在我的选择器按钮完成点击中使用pickerDoneClick功能,它运行良好。但是,如果我在viewDidLoad中使用它,它会给我错误线程1: EXC_BAD_ACCESS(code = 1,address = 0x16fc5da60)。此外它在模拟器中工作正常没有问题,但在实际设备中它给我一个错误。可能是什么原因以及如何解决?

0 个答案:

没有答案