Objective-C の Category と Swift の Extension

既存のクラスを拡張したいときに、 Objective-C であれば Category 、 Swift であれば Extension により実装していきます。 それぞれの実装方法の例です。

Objective-C

NSDate を拡張して sampleMethod というメソッドを実装したい場合、 Objective-C では以下のように記述します。

// NSDate+SampleProject.h

#import <Foundation/Foundation.h>

@interface NSDate (SampleProject)

- (void)sampleMethod;

@end
// NSDate+SampleProject.m

@implementation

- (void)sampleMethod
{
    // hoge
}

@end

Swift

上記と同じメソッドを Swift の Extension で記述すると以下のようになります。

// NSDate+SampleProject.swift

import Foundation

extension NSDate {

    func sampleMethod() {
        // hoge
    }

}

Objective-C から Swift の Extension を利用する

ちなみに、 Objective-C から Swift の Extension を利用したいときは、 Objective-C ファイルで #import "sampleProject-Swift.h" を記述しておくだけで大丈夫です。