[OC学習ノート]プロトコルのいくつかのルール
1464 ワード
OCのプロトコルはJava/C++のインタフェースに相当する
契約の採用:
オブジェクトがDrawingプロトコルに従うかどうかを判断します:id object;if ([object conformsToProtocol: @protocol (Drawing)] == YES)
objectがオプションのoutlineメソッドを実装しているかどうかをテストします:if([object respondsToSelector:@selector(outline)]==YES)
既存のプロトコルを拡張するプロトコルを定義します.
#define
前処理で改行が必要な場合は、e.g.:#define IS_を付けるLEAP_YEAR(y) y % 4 == 0 && y % 100 != 0\ || y % 400 == 0
#define SQUARE(x) x * x y = SQUARE(v + 1); ———> y = v + 1 * v + 1;
#define SQUARE(x) ((x) * (x))
:
@protocol Drawing
-(void) paint;
-(void) erase;
@optional //
-(void) outline;
@end
契約の採用:
@interface AddressBook: NSObject <Drawing>
オブジェクトがDrawingプロトコルに従うかどうかを判断します:id object;if ([object conformsToProtocol: @protocol (Drawing)] == YES)
objectがオプションのoutlineメソッドを実装しているかどうかをテストします:if([object respondsToSelector:@selector(outline)]==YES)
id <NSCopying, NSCoding> object;
既存のプロトコルを拡張するプロトコルを定義します.
@protocol Drawing3D <Drawing>
#define
前処理で改行が必要な場合は、e.g.:#define IS_を付けるLEAP_YEAR(y) y % 4 == 0 && y % 100 != 0\ || y % 400 == 0
#define SQUARE(x) x * x y = SQUARE(v + 1); ———> y = v + 1 * v + 1;
#define SQUARE(x) ((x) * (x))