2009-05-06 4 views
1

は、彼らはこのような何かを:初期化メソッドで[self class] == [LevelAppDelegate class]をチェックする必要がありますか?アップルから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]; 
    } 
} 

は、なぜ彼らは[自己クラス] == [LevelAppDelegateクラス]があることを行うのですか?

答えて

3

このテストでは、サブクラスがロードされたときにinitializeが呼び出されると、初期化コードが無効になります。

http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html#//apple_ref/doc/uid/20000050-initialize

+0

'と同等の[LevelAppDelegateクラス]' == '[自己クラス]です:' [自己isMemberOfClass [LevelAppDelegateクラス]]? – adubr

関連する問題