Iphone 为什么要在初始化方法中检查[self class]==[LevelAppDelegate class]?

Iphone 为什么要在初始化方法中检查[self class]==[LevelAppDelegate class]?,iphone,cocoa-touch,uikit,Iphone,Cocoa Touch,Uikit,在Apple BubbleLevel示例的AppDelegate中,它们执行以下操作: + (void)initialize { if ([self class] == [LevelAppDelegate class]) { // Register a default value for the instrument calibration. // This will be used if the user hasn't calibrated the i

在Apple BubbleLevel示例的AppDelegate中,它们执行以下操作:

+ (void)initialize {
    if ([self class] == [LevelAppDelegate class]) {
        // Register a default value for the instrument calibration. 
        // This will be used if the user hasn't calibrated the instrument.
        NSNumber *defaultCalibrationOffset = [NSNumber numberWithFloat:0.0];
        NSDictionary *resourceDict = [NSDictionary dictionaryWithObject:defaultCalibrationOffset forKey:BubbleLevelCalibrationOffsetKey];
        [[NSUserDefaults standardUserDefaults] registerDefaults:resourceDict];
    }
}

为什么他们会这样做[self class]==[LevelAppDelegate class]?

此测试确保在加载子类时调用initialize时初始化代码无效


[self class]==[LevelAppDelegate class]
是否等同于
[self isMemberOfClass:[LevelAppDelegate class]]