我不知道为什么,但每当我做一个简单的事情时:
[_window setContentView:newView];
我遇到“gdb”崩溃。
我有两种方法,“enterFullscreen”、“exitFullscreen”,其中 _window 是我的主 NSWindow。
NSView *oldView;
- (void)enterFullScreen:(NSView*)newView
{
oldView = [[_window contentView] view];
[_window setContentView:newView];
}
- (void)exitFullscreen:(NSView*)newView
{
[_window setContentView:oldView];
}
这 2 个方法通过 IBAction 链接到 2 个按钮。每当我按下按钮时, View 都会交换,但随后立即崩溃。
有人知道为什么吗?
谢谢大家
编辑:这是我现在拥有的代码:
-(void)enterFullscreen(NSView*)newView
{
oldView = [[NSView alloc] init];
oldView = [_window contentView];
[newView removeFromSuperview];
[_window setContentView:newView];
}
- (void)exitFullscreen:(NSView*)newView
{
[_window setContentView:oldView];
}
进入全屏工作正常,但是当我调用 exitFullscreen 时,窗口变为空白,然后导致以下崩溃:
非常感谢任何帮助!
最佳答案
发布的代码无法编译。缺少冒号或者我无法以其他方式理解方法签名。
其次,[window contentView]
返回一个 NSView
。然后,您可以在其上调用 -view
方法。那是什么? NSView
没有这样的方法。从上下文来看,您的意思是在 oldView
中保存实际的旧内容 View ,那么为什么要调用 [window contentView]
之外的内容呢?
无论如何,窗口保留其内容 View 。但是,当您换入新内容 View 时,它会释放旧内容 View 并保留新内容 View 。如果您使用 ARC 并且 oldView
不是 __strong
或者您没有使用 ARC,则旧内容 View 不会被任何内容保留并被释放。
如果这不能解释问题,您需要发布确切的异常、崩溃或错误消息并显示发生的位置。
关于objective-c - 窗口setContentView崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10365056/