它只是坐在那里... 如何独立于UI操作运行代码(即不仅响应按钮推送)? 我正在尝试在awakeFromNib之前初始化一些对象并运行一些脚本。我该怎么做?
它只是坐在那里... 如何独立于UI操作运行代码(即不仅响应按钮推送)? 我正在尝试在awakeFromNib之前初始化一些对象并运行一些脚本。我该怎么做?
我写了一篇关于Cocoa和Objective-C的重要事实清单,你可能想阅读。听起来你有一些误解(可能是从你更熟悉的其他框架带过来的),那个清单可以为你澄清。
如何独立于UI操作运行代码(即不仅在响应按钮推送时)?
这取决于你何时尝试执行它。例如,定期操作将由计时器处理。
我正在尝试在awakeFromNib之前初始化一些对象并运行一些脚本。我该怎么做?
你可以在initWithCoder:
中执行此操作,该方法会发送给从存档中实例化的每个非视图层对象,包括你的对象。nib也是存档。
你还可以考虑成为应用程序代理并实现一个applicationWillFinishLaunching:
方法。
第三种方式是将代码塞到main
中。请注意,除非您将其包装在@autoreleasepool
语句中,否则这里几乎任何Cocoa代码都可能记录“没有autorelease pool”警告;其他解决方案没有此问题,因为NSApplication已经为您创建了autorelease池。
main.m是启动应用程序的文件 - 如果要在nibs加载之前运行某些东西,请将其放置在NSApplication创建之前的main.m中。