LoginSignup
13
15

More than 5 years have passed since last update.

Objective-Cのカテゴリについてメモ

Posted at

既存のクラスにメソッドを追加できる仕組み
サブクラスを作成せずに、機能を拡張する
rubyのmixinに似ている気がするが、インスタンス変数は宣言できない
(カテゴリはコード実行時に動的に解決される為)

また、複数のカテゴリで同じメソッドが定義されていた場合はどのメソッドが呼ばれるかは決められない
機能の拡張の他にも、メソッドのグループ化にも使われる

もともとは、クラスを分割して書くことができるようにするために実装された機能なので
「カテゴリ」という名前のようだ

使用するには、カテゴリ用のヘッダファイルと実装ファイルを用意する
元のクラス名+カテゴリ名という命名規則がよさそう

NSString+Additional.h

#import <Foundation/Foundation.h>

@interface NSString (Additional)

- (NSString *)addMethod;

@end

NSString+Additional.m

#import "NSString+Additional.h"

@implementation NSString (Additional)

- (NSString *)addMethod
{
  ...
}

@end
13
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
15