2015.7.29 第四堂 protocol协议
来源:互联网 发布:淘宝客返利返到哪里 编辑:程序博客网 时间:2024/05/18 15:27
小结:这一堂课学习了protocol协议,以很生动的举例(如职工协议、猫狗人的动作)深入了其了解。protocol实际上是一个接口,他可以被任何类实现,其中有必须实现的required,有选择实现的optional。比较简单易于理解,之后对其进行小练习。
知识点一:protocol协议的定义
一系列不属于任何类的方法列表,其中声明的方法可以被任何类实现
协议不是类,它是定义了一个其他对象可以实现的接口
如果在某个类中实现了协议中的某个方法,就说明服从了这个协议
注意:
1.协议中不能定义属性变量或者成员变量,只能定义方法
2.一可以服从多
3.协议中定义的方法不一定实现 (OC是弱语法)
知识点二:之前补充 OC基础 obejetive c programming guide
1.property的使用
2.(ios开发/面向对象)继承
3.protocol 协议-代理(委托)
4.category 类别
5.block 块
6.OC内存管理
developer.apple.com -resours -library -memormanagement
重点 foundation框架 各自有哪些方法
知识点三:protocol的定义
//定义一个协议
@protocol AnimalActionProtocol <NSObject> //尖括号里是其服从的协议
@required //下面的方法必须实现
- (void)eat;
@optional //下面的方法可以选择实现
- (void)run;
- (void)say;
- (void)sleep;
@end
知识点四:判断对象实现方法,判断对象服从协议
//判断某个对象有没有实现某个方法
if ([animal respondsToSelector:@selector(run)]) {
NSLog(@"实现了这个方法");
} else{
NSLog(@"没有实现这个方法");
}
//判断某个对象是否服从了某个协议
if ([animal conformsToProtocol:@protocol(AnimalActionProtocol)]){
NSLog(@"服从了");
} else{
NSLog(@"么有服从");
}
知识点五:回顾成员变量和属性变量的区别
@interface Person : NSObject<AnimalActionProtocol>{
NSString *name;//成员变量
}
@property (nonatomic, copy) NSString *address;//属性变量
@end
代码如下:
//// main.m// Protocol//// Created by Baocloud-iMac8 on 15/7/29.// Copyright (c) 2015年 宝擎教育. All rights reserved.//#import <Foundation/Foundation.h>#import "Dog.h"#import "Person.h"int main(int argc, const char * argv[]) { @autoreleasepool { //Dog *dd = [[Dog alloc] init]; id<AnimalActionProtocol> animal = [[Person alloc] init]; //判断某个对象有没有实现某个方法 if ([animal respondsToSelector:@selector(run)]) { NSLog(@"实现了这个方法"); } else{ NSLog(@"没有实现这个方法"); } //判断某个对象是否服从了某个协议 if ([animal conformsToProtocol:@protocol(AnimalActionProtocol)]){ NSLog(@"服从了"); } else{ NSLog(@"么有服从"); } } return 0;}
//// Person.h// Protocol//// Created by Baocloud-iMac8 on 15/7/29.// Copyright (c) 2015年 宝擎教育. All rights reserved.//#import <Foundation/Foundation.h>#import "AnimalActionProtocol.h"@interface Person : NSObject<AnimalActionProtocol>{ NSString *name;//成员变量}@property (nonatomic, copy) NSString *address;//属性变量@end
//// Person.m// Protocol//// Created by Baocloud-iMac8 on 15/7/29.// Copyright (c) 2015年 宝擎教育. All rights reserved.//#import "Person.h"@implementation Person//必须实现的方法- (void)eat{ NSLog(@"我要一个吃货 我是肉墩墩");}//可选方法 根据自己的情况选择实现- (void)say{ NSLog(@"说多了 都是泪");}- (void)run{ NSLog(@"我要参加running man");}- (void)sleep{ NSLog(@"我是睡美人儿");}@end
//// Dog.h// Protocol//// Created by Baocloud-iMac8 on 15/7/29.// Copyright (c) 2015年 宝擎教育. All rights reserved.//#import <Foundation/Foundation.h>#import "AnimalActionProtocol.h"@interface Dog : NSObject<AnimalActionProtocol>@end
//// Dog.m// Protocol//// Created by Baocloud-iMac8 on 15/7/29.// Copyright (c) 2015年 宝擎教育. All rights reserved.//#import "Dog.h"@implementation Dog//必须实现的方法- (void)eat{ NSLog(@"舌尖上的小狗");}//可选方法- (void)say{ NSLog(@"汪汪汪");}- (void)sleep{ NSLog(@"胖胖滴 么么哒");}@end
//// AnimalActionProtocol.h// Protocol//// Created by Baocloud-iMac8 on 15/7/29.// Copyright (c) 2015年 宝擎教育. All rights reserved.//#import <Foundation/Foundation.h>//定义一个协议@protocol AnimalActionProtocol <NSObject>@required //下面的方法必须实现- (void)eat;@optional //下面的方法可以选择实现- (void)run;- (void)say;- (void)sleep;@end
- 2015.7.29 第四堂 protocol协议
- BitTorrent协议规范(BitTorrent Protocol Specification)之Peer Wire协议(Peer Wire Protocol)-第四部分
- protocol协议
- Protocol 协议
- Protocol 协议
- protocol 协议
- @protocol协议
- protocol 协议
- 协议Protocol
- 协议Protocol
- 协议(protocol)
- 协议(protocol)
- protocol - 协议
- 协议 protocol
- Protocol 协议
- Protocol协议
- @protocol 协议名 <其它协议,。。>
- Google SiteMap Protocol协议
- spring中IOC是什么意思 个人觉得解释的非常有意思
- [Android实例] Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式
- SpringMVC关于AOP拦截controller的注意事项
- spring中IOC是什么意思 个人觉得解释的非常有意思
- 44 - 判断扑克牌是否是顺子
- 2015.7.29 第四堂 protocol协议
- spring中IOC是什么意思 个人觉得解释的非常有意思
- Android Wifi方法大全
- 9.1数组与字符串(一)——确定一个字符串的所有字符是否完全不同
- 游戏策划与设计师工作重点不同
- jQuery中this与$(this)的区别
- Qt中QTreeWidget的使用
- spring中IOC是什么意思 个人觉得解释的非常有意思
- validatabox必填校验错误