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