簡體   English   中英

設置對象或調用函數EXC_BAD_ACCESS(代碼= 257)時出錯

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

我已經創建了一些自定義UIView,並在我的項目的另一個UIView中實現了。 我在調用某些函數或為某些對象設置值時崩潰,但在設置屬性時卻沒有崩潰。 請參考下面的代碼以正確理解代碼並提出問題。

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
    }
}

我在另一個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
    }
}

調用profileDetailView.setColor()和profileDetailView.userObject = userObject時崩潰,但未在profileDetailView.backgroundColor = UIColor.red上崩潰

現在,我已通過接口構建器將此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])
                   }
              }

      }
}

我已經做了很多嘗試,現在我已經知道問題出在我的界面生成器上。

沒有模塊。

我檢查了從目標繼承模塊,一切正常。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM