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



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 360f4手机充电慢怎么办 vivo卡了怎么办小窍门 白色衣服用84泡后变黄怎么办 用祛斑霜脱皮了怎么办 用祛斑霜脸一直蜕皮怎么办 吃热的就流鼻涕怎么办 键盘qaz失灵其他都没事怎么办 时时彩代理抓了怎么办 6p升级ios11卡顿怎么办 微信弄没了又换号了怎么办 快手账号异常请去激活怎么办 九游账号被转移怎么办 绝地求生刺激战场闪退怎么办 qq回执编号忘了怎么办 电脑开机要用户名和密码怎么办 电脑忘记用户名和密码怎么办 微信账号密码忘了怎么办 开发者账号密保忘记怎么办 华为账号忘记密保问题怎么办 fiyme账号忘记密保怎么办 id忘了密保问题怎么办 vivo账号密码忘记了怎么办 步步高账号密码忘了怎么办 步步高手机账号密码忘了怎么办 康佳电视通行证忘了怎么办 尚游通行证忘了怎么办 深圳免限行通行证忘了截图怎么办 电脑把管理员账号删除了怎么办 uc新浪加载失败怎么办红包还 微信忘记账号和密码怎么办 苹果手机忘记id密码怎么办 购买游戏账号被找回怎么办 交易猫账号忘了怎么办 爱奇艺账号怎么修改不了密码怎么办 论文目录显示错误未定义书签怎么办 银行账号被冻结了怎么办 哈罗单车账号被冻结怎么办 麻袋赚赚账号被冻结怎么办 网赌账号被冻结怎么办 梦想城镇账号被冻结怎么办 钱被银行冻结了怎么办