[objective-c]プロトコル
2008/11/10
objective-c
Objective-Cです。プロトコル(protocol)です。
このプロトコルはJavaでいうところのinterfaceだと思います。
説明としては、「実装が期待されてるメソッドの定義集」って感じでしょうか。
宣言は、@protocolで。
メソッドを記述していきます。
#import <Foundation/NSObject.h>
@protocol MyProtocol
- (void)mymethod;
@end
@interface A:NSObject <MyProtocol>
@end
@protocol MyProtocol
- (void)mymethod;
@end
@interface A:NSObject <MyProtocol>
@end
実装側。
#import "A.h"
@implementation A
- (void)mymethod {}
@end
@implementation A
- (void)mymethod {}
@end
実装せずコンパイルすると、
$ gcc *.m -framework Foundation
A.m:5: warning: incomplete implementation of class 'A'
A.m:5: warning: method definition for '-mymethod' not found
A.m:5: warning: class 'A' does not fully implement the 'MyProtocol' protocol
次に、Objective-C2.0では、プロトコルで定義されたものをすべて実装しなくてもすむオプションが用意されています。
@optional
@required
@optionalをつけると実装がなくてもコンパイラにおこられません。
: