When to use awakeFromNib , initWithWindow , windowDidLoad methods?

本文详细解释了Cocoa应用程序中awakeFromNib和windowDidLoad等方法的作用及调用时机,指导开发者如何正确使用这些方法进行对象初始化及窗口加载,并推荐了学习资源。

First, you should never call awakeFromNib and windowDidLoad yourself. You can implement them in your custom classes, and then Cocoa will call them at the appropriate time.

awakeFromNib works for all objects loaded from a nib archive, not just windows and window controllers. It's a good general place to do setup—it's safe (you're guaranteed that the object is fully loaded, has returned from its init call, and has all of its outlets set), but still pretty early.

windowDidLoad (and windowWillLoad) works for all windows, whether loaded from a nib archive or created on the fly. But it's not called on the window, it's called on the window's controller. (Usually you're not creating your own NSWindow subclass, but you are creating your own NSWindowController subclass.) If you have setup code that depends on the window being loaded, you should put it here (but it's actually not that critical in the simple cases, because as soon as you try to access the window property, it will be created).

initWithWindow: is something you do call yourself, but a beginning Cocoa programmer probably doesn't ever want to do so.

You should probably read some of the guides that come with Xcode. If you want a document-based app, start with "Document-Based App Programming Guide for Mac". If you want a single-window utility app, you'll still need to learn about MVC and so on, so you might actually want to build a document-based app first to learn your way around.

Also, if you want to understand the sequence of events, override every message you can, and add something like NSLog(@"%s", __FUNCTION__); and your syslogs will reveal everything

 

第一,你应该从来没有自称 awakeFromNib 和 windowDidLoad。您可以在您自定义的类中实现它们,然后Cocoa将调用他们在适当的时间。

awakeFromNib 可用于从nib存档加载,不只是窗口和窗口控制器的所有对象。它是一个很好,一般地方不要设置的程序 — — 它是安全的 (你要保障对象是完全加载、 已从其 init 调用、 返回和具有所有其出口设置),但仍然很早。

windowDidLoad (和 windowWillLoad) 适用于所有 windows 是否从nib存档加载或创建动态。但它不是在窗口上,它称为窗口的控制器上。(通常你不去创造你自己的 NSWindow 子类,但您正在创建您自己的 NSWindowController 子类)。如果您有安装程序代码,取决于正在加载的窗口,你应该把它放在这里 (但这是实际上不是关键在简单情况下,因为当您尝试访问的窗口属性,将会创建它)。

initWithWindow: 是您确实调用了自己,但开始Cocoa程序员可能永远不想这样做。你大概应该读一些与 Xcode 来的指南。如果您希望基于文档的应用程序,从开始"基于文档的应用程序编程指南为 Mac"。如果你想要一个单窗口实用程序的应用程序,您仍然需要了解 MVC,等等,所以你可能会真正想要构建一个基于文档的应用程序,首先要了解自己的方法。

此外,如果您想要了解的事件序列,可以重写每个错误信息,比如添加 像NSLog(@"%s",__FUNCTION__);这样你的系统日志转移将揭示的一切错误。

【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值