wco*_*ran 1 macos xcode appkit
我习惯于applicationDidFinishLaunching在 iOS 中执行应用程序初始化,但在 appKit 中它在主视图的方法之后被调用draw!由于应用程序尚未初始化,因此现在绘制任何内容还为时过早。这是顺序:
viewDidLoad (主视图控制器)draw(_ dirtyRect:) (主控制器视图)applicationDidFinishLaunching (为时已晚!)该API参考说,有关以下applicationDidFinishLaunching
在应用程序的主运行循环启动之后但在处理任何事件之前调用此方法。
因此,应该在之后 发布抽奖事件applicationDidFinishLaunching。我不习惯这种行为——这是怎么回事?
你只是在做一个错误的假设。初始视图控制器在调用之前viewDidLoad 会触发applicationDidFinishLaunching。这是因为运行时会在调用applicationDidFinishLaunching应用程序委托之前加载故事板的初始窗口控制器,并导致加载其视图。
如果您需要在主视图之前的事件draw,请实现applicationWillFinishLaunching. 但是,因为您现在知道事件的实际顺序,所以在主视图控制器的 中进行应用程序初始化会更好,因为viewDidLoad它甚至更早。毕竟,如果您最初绘制的内容取决于您之前执行的初始化,则viewDidLoad似乎非常适合。
在基于现代故事板的传统启动中,您可以获得的最早事件是应用程序委托的awakeFromNib. 但要小心,因为在 macOS 中,它的调用频率可能比您预期的要高。(实际上,类方法initialize甚至更早,但请注意,您无法在 Swift 中实现它。)
| 归档时间: |
|
| 查看次数: |
1767 次 |
| 最近记录: |