创建一个空的工程

在工程中我们新建一个类 继承与NSObject

定义一个协议‘

@protocol UpdateAlertDelegate <NSObject> //这里的红色字体就是我们定义的协议的名称

- (void)updateAlert;//这个就是如果某个类要遵循此协议必须实现的一个方法,有参数或者无参数视情况而定

@end

@interface TimerControl : NSObject

@property (nonatomic, weak) id<UpdateAlertDelegate> delegate;

@end

在这个协议类实现的文件里

当需要委托另一个类做一些事情的时候

我们就可以在这个协议类的实现文件里写上这么一行代码

[self.delegate updateAlert];

在要遵循此协议的类里 首先要接受此协议‘

@interface DelegateDemoViewController : UIViewController<UpdateAlertDelegate>

协议对象.delegate = self; //设置代理实例

而且还要必须实现此协议规定的一些方法

- (void)updateAlert {//实现协议的方法

也就是说当协议类里的[self.delegate updateAlert];这句代码执行以后 紧接着执行的是遵循此协议的类里面实现的此协议规定的协议方法

swift

1.首先定义一份协议。
protocol ToolProrocol{
   //代理方法
   func didRecieveResults(result:Int)
}

2.定义一个代理属性
//声明代理属性
var delegate : ToolProrocol?

3. 实用者,首先加上
class ViewController: UIViewController,ToolProrocol

4.并且设置代理和实现
  xxx.delegate = self
  func didRecieveResults(result: Int) {
    }

5. 最后直接调用就ok了
self.delegate?.didRecieveResults(1)

虽然有点绕  但事实就是这样  哈哈哈 完事   只要理解了其实你想用的时候自然而然的就写出来了

iOS oc和swift中协议的使用的更多相关文章

  1. IOS --- OC与Swift混编

    swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,哪就使用混编.这个在IOS8中是允许的. ...

  2. 【转】IOS --- OC与Swift混编

    群里大神发的网址,感觉有用就先收录了,暂时没时间看SWIFT,感觉代码简洁,但是可阅读性不是太高,有些代码让系统去判断类型,同样的,我们看代码的时候也得自己去判断类型,或许看多就习惯了,有时间再说吧, ...

  3. iOS开发之OC与swift开发混编教程,代理的相互调用,block的实现。OC调用Swift中的代理, OC调用Swift中的Block 闭包

    本文章将从两个方向分别介绍 OC 与 swift 混编 1. 第一个方向从 swift工程 中引入 oc类 1. 1 如何在swift的类中使用oc类    1.2  如何在swift中实现oc的代理 ...

  4. 【iOS】在Swift中使用JSONModel

    前言 首先所有的Model还是使用oc来写——看到这一句是不是想关网页了- - #,在swift里面直接写一直报错所以就将就用oc来写了,这里主要是分享一下搭配Alamofire使用的经验. 声明 欢 ...

  5. IOS学习[Swift中跳转与传值]

    Swift中页面跳转与传值: 1.简单方式 首先,Swift的跳转可分为利用xib文件跳转与storyboard跳转两种方法,我这里选择使用storyboard的界面跳转方法. 1.通过在storyb ...

  6. ios oc调用swift framework

    1.oc 调用swift /*oc调用swift, project name为DeomOC: 1.oc工程DemoOC中显式创建一个swift文件,生成DemoOC-Bridging-Header.h ...

  7. iOS OC和Swift进行互相调用

    有时候 ,我们会涉及到双向混合编程,特别是OC和swift的互相引用. swift调用oc的方法: 1.桥接文件,一般是swift工程,在创建一个oc文件时,系统自动添加(不用改名,直接默认即可) 2 ...

  8. iOS - OC 与 Swift 互相操作

    前言 在 Swift 语言中,我们可以使用 Objective-C.C 语言编写代码,我们可以导入任意用 Objective-C 写的 Cocoa 平台框架.Objective-C 框架或 C 类库. ...

  9. ios学习:swift中实现分享到微博、facebook,twitter等

    在swift中打开分享功能原来是如此的简单. 1.首先须要 import Social 2.在分享button事件以下 var controller:SLComposeViewController = ...

随机推荐

  1. base库

    /* * 跨浏览器基础库=============================================== * */ //浏览器检测 (function () { window.sys = ...

  2. Problem - D - Codeforces Fix a Tree

    Problem - D - Codeforces  Fix a Tree 看完第一名的代码,顿然醒悟... 我可以把所有单独的点全部当成线,那么只有线和环. 如果全是线的话,直接线的条数-1,便是操作 ...

  3. java采用Apache FileUpload组件实现上传

    可见:FileItemSteam(servletFileUpload.getItemIterator(httpServletRequest))速度要快于FileItem(servletFileUplo ...

  4. 获取当前路径 ${pageContext.request.contextPath}

    ${pageContext.request.contextPath}

  5. AVR编程_如何通过软件复位AVR?(转)

    源:http://blog.sina.com.cn/s/blog_493520900100bpos.html Question 如何通过软件复位AVR? Answer 如果你想通过软件复位AVR,你应 ...

  6. HTML--绝对路径, 表格,表单, 框架

    URL, URI, URN URL: 统一资源定位符: Uniform Resource Locator URN: 持久可用的资源标准名称 Uniform Resource Name , 比如邮箱 U ...

  7. 比较实用的webpack配置代码

    var path = require('path');var webpack = require('webpack');var ExtractTextPlugin = require('extract ...

  8. Postman 测试web接口(推荐)

  9. php小知识。

    合并数组的2个方式区别 1)键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖) 2)键 ...

  10. CoordinatorLayout学习笔记

    CoordinatorLayout是一个增强型的FrameLayout.它的作用有两个 作为一个布局的根布局 最为一个为子视图之间相互协调手势效果的一个协调布局 代码如下: <?xml vers ...