umetaberu

umetaberu

プログラミング技術に関するメモ書き

Objective-Cインスタンスメソッドとクラスメソッドの書き方

違い

  • + プラス  クラスメソッド
    • クラスの型から直接実行できる静的関数

[Person.h]

#import <Foundation/Foundation.h>

@interface Person : NSObject
// メソッド定義
-(void) doInstanceMethod;
+(void) doClassMethod;
@end

[Person.m]

#import クラス名.h
#import プロジェクト名-Swift.h

// Personクラス
@implementation Person: NSObject
// 動的関数:インスタンスメソッド
-(void)doInstanceMethod {
  // 処理
}

// 静的関数:クラスメソッド:静的:Swiftでいうstatic
+(void)doClassMethod {
  // 処理
}
@end

[HumanResources.m]

// インスタンス化
Person *myPerson = [[Person alloc] init];
// doSomethingメソッドを呼ぶ :インスタンスメソッド:動的
[myPerson doInstanceMethod];

// doSomethingElseメソッドを呼ぶ :クラスメソッド:静的:Swiftでいうstatic
[Person doClassMethod];

まとめ

クラスメソッドはインスタンス化しないといけない。
インスタンスメソッドはそのまま使えるが、値を直接書き換えているため注意が必要