我创建了一个新的基于窗口的项目,无法弄清为什么它什么也没做。最终,我在didFinishLaunching之后放置了一个NSLog,并且在运行它时从未记录它。这是我编写的所有代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSLog(@"didFinishLaunching");
// Get the device object and turn proximity monitoring on
UIDevice *d = [UIDevice currentDevice];
[d setProximityMonitoringEnabled:YES];
// Get the NSNotificationCenter object
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
// Sign up to receive notifications when the proximity state changes
[nc addObserver:self selector:@selector(proximityChanged:) name:UIDeviceProximityStateDidChangeNotification object:d];
NSLog(@"Observing...");
[self.window makeKeyAndVisible];
return YES;
}
- (void)proximityChanged:(NSNotification *)note {
// Print out the changes of proximity state
NSLog(@"Proximity Changed: %d", [[note object] proximityState]);
}
这就是我编写的全部内容,而当我在模拟器或设备上运行它时,则什么也没有记录。有什么想法吗?
最佳答案
好吧,您正在谈论应用程序委托。明显的原因-您的对象未设置为应用程序委托。
查看Apple文档,有很多方法可以实现它:
在Interface Builder中检查您的nib文件,然后查看是否已安装“应用程序委托”。
参考文件
Core Application Design
应用程序委托是您在以下位置提供的自定义对象
应用启动时间,通常是将其嵌入到应用的
主笔尖文件。该对象的主要工作是初始化
应用程序并在屏幕上显示其窗口。 UIApplication对象
在特定的应用程序级事件时也会通知此对象
发生,例如当应用程序需要中断时(因为
或进入背景(由于用户
点击“主页”按钮)。
第四个参数标识应用程序委托的类。
应用程序代表负责管理高层
系统与您的自定义代码之间的交互。指定nil
告诉UIKit应用程序委托对象位于
应用程序的主Nib文件(构建的应用程序就是这种情况
使用Xcode模板)。
关于iphone - didFinishLaunching永远不会被调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6963130/