我有一个触发弹出框的按钮,弹出框上有一个复选框。复选框的状态复选框绑定到NSManagedObject的字段“checkboxState”。
以下是该方案:
应用程序不会死,它只是没有响应。
按钮的操作如下:
- (IBAction)showPopover:(id)sender {
if (!_myPopover) {
_myPopover = [[NSPopover alloc] init];
_myPopover.delegate = self;
_myPopover.contentViewController = self;
_myPopover.animates = YES;
_myPopover.behavior = NSPopoverBehaviorSemitransient;
_myPopover.appearance = NSPopoverAppearanceMinimal;
}
id theManagedObject = self.myArrayController.selection;
BOOL state = [[theManagedObject valueForKey:@"checkboxState"] boolValue];
if (state) {
_myPopover.contentSize = NSMakeSize(360, 340);
[self.view1 setHidden:NO];
[self.view2 setHidden:NO];
}
else {
[self.view1 setHidden:YES];
[self.view2 setHidden:YES];
_myPopover.contentSize = NSMakeSize(360, 270);
}
[_myPopover showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxYEdge];
}
更改对象的checkboxState的代码是:
[anManagedObject setValue:@NO forKey:@"checkboxState"]
如果我在showPopover中评论_myPopover.contentSize = NSMakeSize(360, 270)
;它会起作用。
如果我对[anManagedObject setValue:@NO forKey:@"checkboxState"]
发表评论,它将会有效
我使用了@try @catch
,没有抛出任何错误。我使用了Profile工具,似乎应用程序进入无限循环,内存使用率很快上升。导致此问题的可能是[NSLayoutConstaint _loweredExpressionReportingConstantIsRounded:]
和[NSIsObjectiveLinearExpression replaceVariable:withExpression:processVariableNewToReceiver:processVariableDroppedFromReceiver:]
有什么想法吗?我一直坚持这个问题一天。真的需要解决这个问题。
编辑: 问题发生在第25秒。之后分配了大量内存。
从对象列表中,我看到以下内容,并且反复调用它们直到结束。