Objective-C 中协议 蓝懿教育

1、协议用到的情况:某个类有一个实例方法,这个实例方法对所传过来的对象,限制其必须实现了某个特定的方法,而对传过来的对象类型没有限制。

2、格式

协议名:@protocol 协议名      协议名命名一般:类名+Delegate。

协议内容:特定的某方法

具体举例:

Aa类中得实例方法是具有协议限制的。

Bb类是一个普通类。

Aa.h中:

//协议写法

@protocol AaDelegate <NSObject>

//协议内容

-(void)play;

@end

@interface Aa : NSObject

//传染的对象 遵守协议

-(void)playWithObject:(id<AaDelegate>)anyobject;

@end

Aa.m中写好带协议的实例方法

-(void)playWithObject:(id<AaDelegate>)anyobject{

[anyobject play];

}

当在ViewController中引入Aa Bb 类。

分别创建对象。Aa 类对象,调用实例方法把Bb类对象传入时报警告:要求Bb 类对象必须遵守Aa 类中实例方法的协议。

需要在Bb类的Bb.h:

引入协议所在类

#import "Aa.h"

让Bb类遵守协议:

@interface Bb : NSObject<AaDelegate>

在Bb.h中实现协议内容。

时间: 2024-09-27 20:15:13

Objective-C 中协议 蓝懿教育的相关文章

2015 IOS 学习笔记 控 件 ——蓝懿教育

UIlabel  *l1   蓝懿教育 text font 设置字体 设置居中  l1 setTextAlignment:NSTextAlignmentCenter 设置行数  numberOfLines //    lf.font = [UIFont fontWithName:@"字体名称" size:18]; //设置居中 [l setTextAlignment:NSTextAlignmentCenter]; UIbutton 内容  setTitle    UI button  

2015 IOS TableView ——在蓝懿教育 学习笔记

TableView   蓝懿教育 1首先创建 UITableView *tableView = [[UITableView alloc]initWithFrame:self.view.bounds]; tableView.dataSource = self; //dataSource 是数据源 [self.view addSubview:tableView]; 2创建协议 @interface ViewController ()<</span>UITableViewDataSource&

2015 IOS 制作通讯录——在蓝懿教育 学习笔记

来自蓝懿教育 学生笔记 1.删除界面中的vc,并且建立一个tablevc,在sb中创建navigation,并且关联TableView中的属性,并让箭头指向第一页面的navigation,并关联cell 2.拖拽界面view controller 建立一个personviewcontroller使之与sb中的关联, 3.在tablevc中建立左上角的加号 4.关联Personvc属性,并且在左上角加号中的事件方法中写入事件 5.删除vdidload中的多余行(留下添加右上角删除按钮代码): 6.

2015 IOS 学习笔记 正向反向练习 ——蓝懿教育

正向传值   蓝懿教育 跳转页面过程中 从ViewController(A类) 向 SecondViewController(B类)中跳转 在ViewControlller中创建的一个SecondViewController页面 所以从ViewController向Second传叫正向传值 如果传的是text 那么实际传的是字符串 所以要先在 SecondViewController.h中 建一个属性 Nsstring*accept    .h是开放可见的 那么ViewControlller中

蓝懿教育 内存管理

栈区:里面存放基本数据类型及对象地址,不需要考虑内存释放问题 堆区:由程序员分配释放.若程序员不释放,则这块内存永远不会被释放,会造成内存泄露.iOS中,alloc创建出来对象都放在堆区. alloc 命令会导致内存计数+1 谁加的谁负责 属性括号里面的的关键字 用来控制set和get方法中的内容. retain(strong) 会让set方法中做两件事1.把原来的值release 2.把新传递进来的值 retain assign(weak)  会让set方法中只做一件事 就是把传递进来的值赋值

2015 IOS 文件管理器 ——在蓝懿教育 学习笔记

得到文件管理器   蓝懿教育 NSFileManager *fm = [NSFileManager defaultManager]; //    复制 //    [fm copyItemAtPath:@"/Users/ivan/Desktop/a.png" toPath:@"/Users/ivan/Desktop/copy/a.png" error:nil]; //    移动  移动的时候目的地不能有重名的 //    [fm moveItemAtPath:@&

蓝懿教育 零基础学习iOS10天的一些心得

10天以前来到蓝懿开始我的iOS学习生涯,获取知识的时候时间过得很快,10天已经过去了,从开始的时候对iOS这个概念都一知半解,到现在能自己摸索着试着写出一些简单的小游戏小项目,像简单版的计算器.打砖块,接水果,微信飞机大战等,并在里面加些自己的想法,虽然编写代码的过程中时常会有些错误,但才刚开始学习,出错在所难免,多多练习.思考,从错误中汲取知识才是最重要的,同时感觉自己这一周的时候收获很多. 对于学习知识或者一项技能,学习方法和心态是很重要,在学习当中应该保持一颗良好的心态.应该借鉴别人好的

蓝懿教育第十四日记录

今天是九月六日.来到蓝懿的第十四天.刘老师没有今天没有讲新课 ,而是带领我们做了一个高级版计算器.前两天我也做过两版简单的计算器.但今天听了老师的讲解,发现自己曾经的代码有许多过于繁琐的地方.很多知道改进的地方.还有就是发现前两天讲得代码已经有些淡忘了.例如如何替换数组中的数据 和如何拼接改变字符串.而今天收获的最大的就是如何实现优先级的计算. for (int i=0; i<self.operators.count; i++) { NSString *operator = self.opera

蓝懿教育 相册

蓝懿  昨天讲了如何做相册和文件管理器 相册编写的步骤 1.搭建第一个页面(tableViewcontroller) 2.创建相册(Album)对象 有name和imagePaths数组的属性 3.在第一个页面加载出来的时候获取图片路径下面所有的内容(里面有美女别墅汽车这几个文件夹的名字) 得到文件夹 名字的数组 ,遍历这个数组获取每一个文件夹的名字,得到文件夹的完整路径,再次获取这个文件夹下面所有的 图片路径,根据当前遍历的相册文件夹的路径 创建Album对象 往Album对象中的imageP