简体   繁体   English

设置对象或调用函数EXC_BAD_ACCESS(代码= 257)时出错

[英]Error while setting object or calling function EXC_BAD_ACCESS(code=257)

I had created some custom UIViews and implemented in another UIView in my projects. 我已经创建了一些自定义UIView,并在我的项目的另一个UIView中实现了。 I'm getting a crash while calling some functions or setting values to some objects but not getting crash when setting property. 我在调用某些函数或为某些对象设置值时崩溃,但在设置属性时却没有崩溃。 Refer below code to understand code and question properly. 请参考下面的代码以正确理解代码并提出问题。

class SearchProfileDetailView: UIView {

    @IBOutlet weak var userInfoTable: UITableView!

    var userObject: UserObject?

    override init(frame:CGRect) {
        super.init(frame: frame)
        loadViewFromNib()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        loadViewFromNib()
    }

    func loadViewFromNib() {
        let bundle = Bundle(for: type(of: self))
        let nib = UINib(nibName: "SearchProfileDetailView", bundle: bundle)
        let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView
        view.frame = bounds
        self.addSubview(view);

    }

    func setColor() {
        self.backgroundColor = UIColor.red
    }
}

I've used this SearchProfileDetailView in another UIView with the interface builder and assigned outlet refer below code. 我在另一个UIView中将此SearchProfileDetailView与接口构建器一起使用,并分配了出口,请参见以下代码。

class SearchResultView: UIView {

    @IBOutlet weak var profileDetailView: SearchProfileDetailView!

    var currentIndex: Int?

    override init(frame:CGRect) {
        super.init(frame: frame)
        loadViewFromNib()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        loadViewFromNib()
    }

    func loadViewFromNib() {
        let bundle = Bundle(for: type(of: self))
        let nib = UINib(nibName: "SearchResultView", bundle: bundle)
        let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView
        view.frame = bounds
        self.addSubview(view);
    }
    func setUserProfile(userObject: UserObject) {
        profileDetailView.backgroundColor = UIColor.red  // Not Crashed      
        profileDetailView.userObject = userObject //Crashed with error mentioned in title of question
        profileDetailView.setColor() ////Crashed with error mentioned in title of question
    }
}

Crashed while calling profileDetailView.setColor() and profileDetailView.userObject = userObject But not crashed on profileDetailView.backgroundColor = UIColor.red 调用profileDetailView.setColor()和profileDetailView.userObject = userObject时崩溃,但未在profileDetailView.backgroundColor = UIColor.red上崩溃

Now I've used this SearchResultView into UIViewController with the interface builder. 现在,我已通过接口构建器将此SearchResultView用于UIViewController。

class ExploreViewController: UIViewController {

      @IBOutlet weak var searchResultView: SearchResultView!

      func getResult() {
           SearchAPIHandler().search(params: parameters) {[weak self] (responseData) in
           DispatchQueue.main.async {
                  guard let strongSelf = self else {
                            return
                   }
                   if let users = responseData.users, !users.isEmpty {
                          strongSelf.searchResultView.setUserProfile(userObject: users[0])
                   }
              }

      }
}

I had tried so much and now I've got to know that problem was with my interface builder. 我已经做了很多尝试,现在我已经知道问题出在我的界面生成器上。

There was none module. 没有模块。

I checked Inherit Module From Target and everything works well. 我检查了从目标继承模块,一切正常。

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM