interface,class定義

objective-cでは、インターフェースとクラスを別ファイルに作成するようです。
インターフェースは「interfaceName.h」クラスは「className.m」と拡張子はそれぞれhとmです。
実際にサンプルを作成してみます。

  • Calculate.h
#import <Foundation/Foundation.h>

@interface Calculate : NSObject
{
    int x;
    int y;
}
@property int x,y;

-(NSNumber *)add:(int)x :(int)y;
//-(int)add:(int)x :(int)y;  // エラーになる
@end
  • Calculate.m
#import "Calculate.h"

@implementation Calculate
@synthesize x,y;
-(NSNumber *)add:(int)x :(int)y{
    self.x = x;
    self.y = y;
    int ans = self.x + self.y;
    return [[NSNumber alloc]initWithInt:ans];
}
@end
#import <Foundation/Foundation.h>
#import "calculate.h"

int main (int argc, const char * argv[])
{
    
    @autoreleasepool {
        Calculate *cal = [[Calculate alloc]init];
        NSNumber *ans = [cal add:1 :2];
        NSLog(@"%d+%d=%d", 1,2,[ans intValue]);
    }
    return 0;
}
  • 実行結果は
2012-02-12 18:23:31.307 Study[321:707] 1+2=3