// // Animal.h // CategoryProtocol // // Created by God Lin on 14-11-26. // Copyright (c) 2014年 hust. All rights reserved. // #ifndef CategoryProtocol_Animal_h #define CategoryProtocol_Animal_h // 定义协议 @protocol Animal <NSObject> // default is required @required -(void)showName; @optional -(void)showOptional; @end #endif
// // Cat+speak.h // CategoryProtocol // // Created by God Lin on 14-11-26. // Copyright (c) 2014年 hust. All rights reserved. // #import <Foundation/Foundation.h> #import "Cat.h" // 定义分类,注意语法,且只能写方法 @interface Cat (speak) -(void)speak; @end
// // Cat+speak.m // CategoryProtocol // // Created by God Lin on 14-11-26. // Copyright (c) 2014年 hust. All rights reserved. // #import "Cat+speak.h" // 实现分类,能直接访问类属性 @implementation Cat (speak) -(void)speak { NSLog(@"%@ : 喵喵", name); } @end
// // Cat.h // CategoryProtocol // // Created by God Lin on 14-11-26. // Copyright (c) 2014年 hust. All rights reserved. // #import <Foundation/Foundation.h> #import "Animal.h" // 类实现协议 @interface Cat : NSObject <Animal> { NSString* name; } @property NSString* name; -(void)showName; @end
// // Cat.m // CategoryProtocol // // Created by God Lin on 14-11-26. // Copyright (c) 2014年 hust. All rights reserved. // #import "Cat.h" @implementation Cat @synthesize name; -(void)showName { NSLog(@"%@", name); } @end
// // main.m // CategoryProtocol // // Created by God Lin on 14-11-26. // Copyright (c) 2014年 hust. All rights reserved. // #import <Foundation/Foundation.h> #import "Cat+speak.h" int main(int argc, const char * argv[]) { @autoreleasepool { Cat* cat = [[Cat alloc] init]; [cat setName:@"HelloKity"]; [cat showName]; [cat speak]; } return 0; }
2014-11-26 22:32:45.488 CategoryProtocol[1741:303] HelloKity 2014-11-26 22:32:45.490 CategoryProtocol[1741:303] HelloKity : 喵喵
原文地址:http://blog.csdn.net/arbboter/article/details/41524815