我正在使用菜单驱动的应用程序访问各种类别的笔尖,并在第一次选择时收到上述错误消息。我第一次收到此消息。虽然不是应用程序查杀消息,但我正在尝试解决警告。
要注意我有5个不同的课程
我通过appDelegate.m代码中的按钮访问各种类别的nib,如下所示:
- (IBAction)btnShowPriceSource:(id)sender {
if (ps == nil){
ps = [[PriceSource alloc] initWithWindowNibName:@"PriceSource"];
}
[ps showWindow:nil];
}
我收到的信息如下:
2015-01-05 12:13:08.671 Stamp Collection[2527:442573] unlockFocus called too many times. Called on <NSButton: 0x608000140420>.
如何消除此消息?
答案 0 :(得分:2)
此消息告诉您-lockFocus
与-unlockFocus
不平衡。这可以是NSView
或NSImage
的一部分。这可能发生的原因有很多。您可能直接在某处调用lockFocus
,但未能解锁。您可能在没有先致电NSGraphicsContext
的情况下绘制成lockFocus
或图片。您可能正在后台线程上执行绘图。
如果您可以相当可靠地重现它,您可能希望在-[UIView unlockFocus]
和-[NSImage unlockFocus]
上放置一个符号断点,并至少看到可能涉及的视图。它可能与您的btnShowPriceSource
方法无关。
答案 1 :(得分:0)
我在点击按钮时尝试显示模态窗口时收到相同的信息。
问题解决了显示模态&#34;外部&#34;按钮调用的代码。
在你的情况下:
- (IBAction)btnShowPriceSource:(id)sender {
if (ps == nil){
ps = [[PriceSource alloc] initWithWindowNibName:@"PriceSource"];
}
dispatch_async(dispatch_get_main_queue(), ^(void) {
[ps showWindow:nil];
}
}
块中的代码应该在将焦点锁定在按钮释放它之后立即执行。