Objective-Cの言語仕様(カテゴリ編)
カテゴリ
まずRubyの例から(moduleで拡張)
Stringクラスをmoduleで拡張。
module PlusHoge def print_foo print self + "foo" + "\n"; end def print_piyo print self + "piyo" + "\n"; end end class String include PlusHoge end "AAA".print_foo "BBB".print_piyo
結果
AAAfoo BBBpiyo
Objective-Cの例(カテゴリで拡張)
NSString+Hoge.h
#import <Foundation/Foundation.h> @interface NSString (Hoge) -(void) printFoo; -(void) printPiyo; @end
NSString+Hoge.m
#import "NSString+Hoge.h" @implementation NSString (Hoge) -(void)printFoo { NSString *tmp = [NSString stringWithFormat:@"%@%@", self, @"foo"]; NSLog(@"%@", tmp); } -(void)printPiyo { NSString *tmp = [NSString stringWithFormat:@"%@%@", self, @"piyo"]; NSLog(@"%@", tmp); } @end
使うファイル
#import "NSString+Hoge.h" 関数 { [@"AAA" printFoo]; [@"BBB" printPiyo]; }
結果
2012-03-15 16:08:22.832 RENSYU[2332:f803] AAAfoo 2012-03-15 16:08:22.834 RENSYU[2332:f803] BBBpiyo