我有一个类似于“静态”的类,我希望能够对内存不足警告做出响应。但是,当我从模拟器手动触发内存不足警告时,我收到“无法识别的选择器”错误。

相关代码:

@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

希望对您有所帮助。

10-08 06:07