awakeAfterUsingCoder() 导致 EXC_BAD_ACCESS
Posted
技术标签:
【中文标题】awakeAfterUsingCoder() 导致 EXC_BAD_ACCESS【英文标题】:awakeAfterUsingCoder() causing EXC_BAD_ACCESS 【发布时间】:2015-09-30 23:54:06 【问题描述】:我有一个在 InterfaceBuilder 中设计的 UIView,它有一个 Swift 支持类。我正在使用awakeAfterUsingCoder()
来替换实例化的笔尖,如下所示:
public override func awakeAfterUsingCoder(aDecoder: NSCoder) -> AnyObject?
if self.subviews.count == 1 && self.subviews[0].isKindOfClass(UILabel)
let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: "CustomView", bundle: bundle).instantiateWithOwner(nil, options: nil)
return nib[0] as! CustomView
return self
但是,现在我在 AppDelegate 中不断收到EXC_BAD_ACCESS
崩溃。我打开了僵尸并能够收到此消息:
*** -[ModuleName.CustomView _referenceView]:消息发送到已释放实例 0xed13600
_referenceView
必须在框架中的某个地方定义,尽管当我导航到在断点处停止的self
时我没有看到它。我做错了什么?
【问题讨论】:
【参考方案1】:我的故事板中的视图被定义为UIButton
(因为我的 CustomView 是 UIButton 子类)。我将它替换为一个通用的空UIView
,我将条件替换为:
if self.subviews.isEmpty
一切正常。
【讨论】:
以上是关于awakeAfterUsingCoder() 导致 EXC_BAD_ACCESS的主要内容,如果未能解决你的问题,请参考以下文章
FileHandler 创建会导致 NoSuchFileException 导致缺少 .lck
导致非标准行为的 #pragma 是不是会导致 __STDC__ 宏未定义为 1?
为啥 const int main = 195 会导致程序正常工作,但没有 const 会导致分段错误?
React 组件中的错误导致应用程序重新渲染,从而导致无限循环。为啥?
由于master宕机等导致resource调用出现异常,直接将该resource返回到pool以便其他代码使用会导致得到不可预期的结果,导致返回数据混乱。