2018年4月11日

objective-cで共通ロジックがあった場合、クラスメソッドを定義して使用することができます。
objective-cのクラスメソッドの使い方をまとめました。

サンプルプログラム
 メインのプログラムで、日付から曜日を取得するロジックで、曜日取得だけをクラスメソッドにしたものです。

メインプログラム

    // クラスメソッドを呼び出す
    MyClass01 *myClass = [MyClass01 ClassMethod01];
    
    NSString *Wdate = @"20180411";
    Wweekday = [myClass yasumi_chk1:Wdate];
    NSLog(@"day,%ld",Wweekday);

クラスメソッド(hファイル)

@interface MyClass01 : NSObject
// クラスメソッドの宣言
+ (id)ClassMethod01;
// インスタンスメソッドの宣言
- (NSInteger) yasumi_chk1:(NSString *)date_set;

クラスメソッド(mファイル)

// クラスメソッドの実装、初期化処理
+ (id)ClassMethod01 {
    return [[self alloc] init];
}

- (NSInteger) yasumi_chk1:(NSString *)date_set{
    
    // 曜日
    NSCalendar *calendar = [NSCalendar currentCalendar];

    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyyMMdd"];//日付フォーマット
    
    //チェック日領域
    NSDate *chk_date = [dateFormatter dateFromString:date_set];//指定日セット NSString → NSDate
    
    // 曜日
    NSDateComponents *comps = [calendar components:NSCalendarUnitWeekday fromDate:chk_date];
    NSInteger weekday = comps.weekday; // 曜日(1が日曜日 7が土曜日)

    return weekday;
}