【发布时间】:2015-05-01 17:31:20
【问题描述】:
我有一个webView 的子类,它覆盖- hitTest: 基本思想是,如果点击是在body DOM 元素上,我希望webView 上的点击传递到nextResponder。方法是这样的
- (NSView *)hitTest:(NSPoint)aPoint
{
NSDictionary *dict = [self elementAtPoint:aPoint];
if([[dict valueForKey:@"WebElementDOMNode"] isKindOfClass:[DOMHTMLBodyElement class]])
{
return (NSView *)[self nextResponder];
}
return [super hitTest:aPoint];
}
运行时,它在elementAtPoint 和EXC_BAD_ACCESS code=2 上崩溃
现在,它变得更奇怪了。如果我在该行断点应用程序,并在 LLDB 中执行 po [self elementAtPoint:aPoint],则 LLDB 会挂起,直到我执行 ^C。
更奇怪的是。如果我注释掉除最后一个 return 之外的所有内容,中断 return 语句,然后在 LLDB 中运行 po [self elementAtPoint:aPoint] — 我得到了我所期望的,一本很好的字典,告诉我当时关于 DOM 的所有信息。
什么可能导致这种行为?
注意:这是在 OS X 上,而不是在 iOS 上。
【问题讨论】:
标签: objective-c macos cocoa webview