Object-C技术学习,更多资源请访问 https://www.itkc8.com
// main.m
// 非正式协议
//
// Created by Goddog on 15/1/11.
// Copyright (c) 2015年 Goddog. All rights reserved.
//
/*
1.OC中的协议作用就相当于其他语言中接口的作用。
2.协议不提供任何实现,协议体现的是规范和实现分离的设计哲学。
3.让规范和实现分离正是协议的好处,是一种松耦合的设计。
4.类别可以实现非正式协议,这种类别以NSObject为基础,为之创建类别,创建类别时即可指定该类别应该新增的方法。
5.如果类没有实现非正式协议中的某个方法,那么程序运行时如果调用该方法,就会引发unrecognized selector错误。
*/
//
// NSObject+See.h
// 非正式协议
//
// Created by Goddog on 15/1/11.
// Copyright (c) 2015年 Goddog. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSObject (See)
-(void) seeGirl;
@end
//
// NSObject+See.m
// 非正式协议
//
// Created by Goddog on 15/1/11.
// Copyright (c) 2015年 Goddog. All rights reserved.
//
#import "NSObject+See.h"
@implementation NSObject (See)
@end
//
// Girl.h
// 非正式协议
//
// Created by Goddog on 15/1/11.
// Copyright (c) 2015年 Goddog. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "NSObject+See.h"
@interface Girl : NSObject
@end
//
// Girl.m
// 非正式协议
//
// Created by Goddog on 15/1/11.
// Copyright (c) 2015年 Goddog. All rights reserved.
//
#import "Girl.h"
#import "NSObject+See.h"
@implementation Girl
//如果不实现协议中的方法会发生错误
-(void) seeGirl
{
NSLog(@"美丽动人");
}
@end
#import <Foundation/Foundation.h>
#import "Girl.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Girl* girl = [[Girl alloc] init];
[girl seeGirl];
}
return 0;
}
Object-C技术学习,更多资源请访问 https://www.itkc8.com