我有一个包含两个视图的主窗口(也是相应的控制器),我在主窗口中显示一个NSPanel。 NSPanel通过IB连接,在我的主窗口控制器中,我启动模式会话,如下所示
MainWindowController.m
[self.window beginSheet:sheet completionHandler:^(NSModalResponse returnCode) {
NSLog(@"End...");
}];
我在NSNotificationCenter遇到问题,观察员被解除分配,所以我添加了所有的VC
MainWindowController.m + SomeOtherInMainWindowController.m
- (void)dealloc {
NSLog(@"%s",__PRETTY_FUNCTION__);
}
当我以模态方式显示工作表时,我可以看到它们被解除分配。 这当然会产生问题,因为其他VC是根据与工作表的交互发布通知的观察者。
有人可以解释一下这种行为。
事实证明,我之前尝试从单独的XIB加载工作表仍然存在于此行代码中。
// [[NSBundle mainBundle] loadNibNamed:@"SheetWindow" owner:self topLevelObjects:nil];
评论说明解决了这个问题。
答案 0 :(得分:0)
似乎您没有对控制器进行一些强引用,因此ARC会释放它们,最有可能是在自动释放池耗尽时。