NSWindowController加载遇到的几个问题?

本文详细解析了自定义MyWindowController类的使用过程,包括初始化、加载xib文件、调用windowDidLoad函数的时机,以及如何正确显示和关闭窗口。同时介绍了隐藏标题栏的方法和系统对window对象的特殊处理机制。

自定义了一个类MyWindowController,继承自NSWindowController,在使用过程中遇到了几个问题,记录下:
1、一开始以为生成MyWindowController的对象时就会加载xib文件,继而调用windowDidLoad函数,即:
myWindowController = [[MyWindowController alloc] init];
结果没有调用windowDidLoad函数,换成initWithWindowNibName函数初始化对象也还是不行,最后找到原因,调用:
[self.window makeKeyAndOrderFront:nil] 或是 [myWindowController showWindow:self];
这句话后,就调用了windowDidLoad函数,想着应该是显示window时,才会加载xib文件吧

2、假如这里有两行代码

[self.window makeKeyAndOrderFront:nil];
[self test];
这里要注意的是,执行第一行代码时,就会调用windowDidLoad函数,直到windowDidLoad函数结束后,才会执行第二行的代码,顺序就相当于:
— [self.window makeKeyAndOrderFront:nil];
— windowDidLoad函数
— [self test];

3、关闭window可调用Controller的close函数

4、隐藏标题栏,也就是window最上面的,最大化最小化的那一栏,隐藏后最大化最小化会移到下面
self.window.titleVisibility = NSWindowTitleHidden;
self.window.titlebarAppearsTransparent = YES;
self.window.styleMask |= NSWindowStyleMaskFullSizeContentView;

另外,手工创建的NSWindow,关闭后系统会检查这个window有没有controller引用它,有的话就不会释放这个window对象。xib中创建的window则没有这个问题。

但是对于window的释放,系统是特殊处理的,只要关闭就释放了。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值