我创建了一个新的基于窗口的项目,无法弄清楚它为什么没有做任何事情。最后我在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]);
}
这是我写的全部内容,当我在模拟器或设备上运行时,没有记录任何内容。有什么想法吗?
答案 0 :(得分:7)
嗯,你在谈论Application Delegate。显而易见的原因 - 您的对象未设置为应用程序委托。
查看Apple文档,有很多方法可以实现它:
检查Interface Builder中的nib文件,看看是否已设置App Delegate。
应用程序委托是您提供的自定义对象 应用程序启动时间,通常是将其嵌入应用程序中 主nib文件。该对象的主要工作是初始化 应用程序并在屏幕上显示其窗口。 UIApplication对象 还会在特定应用程序级事件时通知此对象 发生,例如当应用程序需要被中断时(因为 传入消息)或移动到后台(因为用户 点击主页按钮。
第四个参数标识应用程序委托的类。 应用程序委托负责管理高级别 系统与您的自定义代码之间的交互。指定nil 告诉UIKit应用程序委托对象位于 应用程序的主nib文件(构建应用程序的情况) 使用Xcode模板)。
答案 1 :(得分:1)
尝试删除构建/清除所有目标,删除构建/目录并从模拟器和/或设备中删除应用程序。然后再次运行它。
作为另一项检查,请尝试在applicationDidBecomeActive:
中记录内容。无论是在初始启动还是从后台恢复,都将调用此方法。