当前位置:  开发笔记 > IOS > 正文

NSApplicaton委托 - applicationDidFinishLaunching

如何解决《NSApplicaton委托-applicationDidFinishLaunching》经验,为你挑选了1个好方法。

我在这里为我的cocoa应用程序声明了一个委托:

MyAppDelegate.h

@interface MyAppDelegate : NSApplication {
}
- (void) applicationDidFinishLaunching:(NSNotification*) notice ;
@end

MyAppDelegate.m

@implementation MyAppDelegate 
- (void) applicationDidFinishLaunching:(NSNotification*) notice {
    NSLog(@"inside appdidfinishlaunching") ;
}
@end

我已将文件所有者的委托出口链接到IB中的此对象.

然而,这种方法并未被调用.我没有看到任何日志消息.

你能告诉我有什么问题吗?



1> Peter Hosey..:

您的应用程序委托本身不是应用程序.它应该继承自NSObject,而不是NSApplication.

为什么这很重要

NSApplication是一个单例.它的init方法总是返回NSApplication的第一个实例或任何子类,抛弃你(或者nib加载器)可能正在调用的任何后续对象init.

因此,您最终将应用程序对象设置为自己的委托.您打算使该委托的对象在第二次调用中死亡init,并且应用程序对象取代了它.

将应用程序对象更改为子类的实例也可以工作,但是您仍然将应用程序作为自己的委托,这是不洁净且可能很危险的(NSApplication可能会私有地实现它的一些委托方法,因为它们'重新通知处理程序方法).唯一正确的解决方案是让您的应用委托类不从NSApplication继承.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有