[OC学习笔记]协议的一些规则

OC中的协议相当于Java/C++中的接口

协议的定义:
@protocol Drawing
-(void) paint;
-(void) erase;
@optional       // 可选的方法
-(void) outline;
@end

采用协议:

@interface AddressBook: NSObject <Drawing>

判断一个object是否遵循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))

你可能感兴趣的:(oc)