我有一个类似于“静态”的类,我希望能够对内存不足警告做出响应。但是,当我从模拟器手动触发内存不足警告时,我收到“无法识别的选择器”错误。
相关代码:
@interface MyClass : NSObject
+ (void) receiveNotification:(NSNotification*) notification;
@end
@implementation MyClass
+ (void) initialize {
[super initialize];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveNotification) name:@"UIApplicationDidReceiveMemoryWarningNotification" object:nil];
}
+ (void) receiveNotification:(NSNotification*) notification {
// Breakpoint here never hits.
// I instead receive error "+[MyClass receiveNotification]: unrecognized selector sent to class".
}
@end
最佳答案
您的方法名称为receiveNotification:
(注意冒号是名称的一部分)
所以选择器应该是@selector(receiveNotification:)
编辑:而且,顺便说一句,我不会在类初始化程序中调用[super initialize]。同样,您应该防止子类导致您编写的此初始化程序被调用两次。有关更多信息,请参见Mike Ash的这篇非常不错的文章:class loading and initialization
希望对您有所帮助。