黑马程序猿_Objective C 类与协议
<a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流!
在oc中 有一种特殊的 接口 叫做协议
@protocol Myprotocol <NSObject> 这是创建一个协议的方法
- (void) test;
@end
简单来说 协议的功能例如以下:
1、协议声明了能够被不论什么类实现的方法
2、协议不是类,但它是一个 其它对象能够 实现的接口
3、假设在某个类中实现了协议中的某个方法, 就是这个类实现了此协议
4、协议经常使用来实现托付对象,一个托付对象是一种要来协同或者代表其它对象的特殊对象
5、在协议中 仅仅声明方法 但不能声明成员变量 也不会实现方法
6、仅仅要某个类遵守了 “这个”协议 ,就相当于有了这个协议中 的全部方法
如:
@interface Person : NSObject <Myprotocol> //一个类能够同一时候遵守多个协议
@end;
此时 Person类中 就有了 协议Myprotocol中的全部方法(test ,test1..)
另一个要注意的问题就是 并不是每个协议中的方法都是 Person所须要的
全部 在 协议中有这么两种预编译指令
@optional 表示能够选择实现的方法
@required 表示强制实现的方法
不实现就会报错
For
example:
@protocol MyProtocol <NSObject>
@optional
- (void) test:
- (void) test1;
//这两个方法能够不实现
@required
- (void) test3;
//这种方法是必需要实现的 不实现会报错
@end
以上就是oc中协议的 一些基本使用方法
<a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流!
黑马程序猿_Objective C 类与协议的更多相关文章
- 黑马程序猿_ 利用oc的协议实现代理模式
先说下代理模式是什么吧 定义: 为其它对象提供一种代理以控制对这个对象的訪问.在某些情况下,一个对象不适合或者不能直接引用还有一个对象 而代理对象能够在client和目标对象之间起到中介的作用. 在看 ...
- 黑马程序猿_Java 代理机制学习总结
-------<a href="http://www.itheima.com/"">android培训</a>.<a href=" ...
- 黑马程序猿————Java基础日常笔记---反射与正則表達式
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 黑马程序猿----Java基础日常笔记---反射与正則表達式 1.1反射 反射的理解和作用: 首 ...
- 黑马程序猿——25,打印流,合并流,对象序列化,管道流,RandomAccessFile
------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培 ...
- 黑马程序猿——15,String,StringBuffer,基本数据类型包装对象
------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培 ...
- 三分之一的程序猿之社交类app踩过的那些坑
三分之一的程序猿之社交类app踩过的那些坑 万众创新,全民创业.哪怕去年陌生人社交不管融资与否都倒闭了不知道多少家,但是依然有很多陌生人社交应用层出不穷的冒出来.各种脑洞大开,让人拍案叫起. 下面我们 ...
- 黑马程序猿——Java中的类载入器
------- android培训.java培训.期待与您交流! -------- 类载入器 Java虚拟机中能够安装多个类载入器,系统默认三个主要类载入器,每一个类负责载入特定位置的类: BootS ...
- IOS-4-面试题1:黑马程序猿IOS面试题大全
一.多线程网络 1. 多线程的底层实现? 1> 首先搞清楚什么是线程.什么是多线程 2> Mach是第一个以多线程方式处理任务的系统.因此多线程的底层实现机制是基于Mach的线程 3> ...
- 黑马程序员——OC语言 类和对象
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)类 1)类的声明 代码编写 ①定义一个Car类,拥有2个属性:轮子数 ...
随机推荐
- 顺序队列之C++实现
下面介绍下用C++实现的顺序队列,在VC6下调试通过. 1.文件组织形式 2.sq.h顺序队列类的说明 #ifndef _SQ_H_ #define _SQ_H_ typedef int dataTy ...
- 关于String.concat()方法和StringBuffer.append()方法的学习:方法是如何追加字符到源字符串的
问题分析: 首先,看看两段代码的运行结果,两段代码分别是: 第一段代码,关于String.concat()方法的测试: public static void main(String[] args) { ...
- 安装ubuntu时的注意事项----个人小总结
今天重装了一次ubuntu,以前是别人帮我装的,而这次是我自己照着网上教程装的. 这个教程还是挺不错的,我就是照着这个装成功的 http://jingyan.baidu.com/article/60c ...
- BZOJ 1622: [Usaco2008 Open]Word Power 名字的能量
题目 1622: [Usaco2008 Open]Word Power 名字的能量 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 349 Solved ...
- java学习之网络编程之echo程序
服务端的实现 package com.gh.echo; import java.io.*; import java.net.*; /** * echo服务器程序 * 实现 不断接收字符串 ,然后返回一 ...
- 11997 - K Smallest Sums(优先队列)
11997 - K Smallest Sums You’re given k arrays, each array has k integers. There are kk ways to pick ...
- php5.5 + apache2.4 安装配置
php5.5 做了大量的更新,在与apache搭配的时候如何选择也很有讲究,这里我们以64位 php5.6 和 Apache2.4为例介绍如何配置. 工具/原料 Win7/8 64位 php5.5.6 ...
- php 学习笔记 数组2
10.切割数组 array_slice(array, offset, length);返回一个由原始数组中的连续元素组成的新数组,参数1为原始数组,参数2为要复制的起始位置, 参数3要复制的个数:新数 ...
- java-finalize
finalize()来自Object的protected 方法,同clone()需要用户具体实现.一.源码中的介绍1. Called by the garbage collector on an ...
- 如何删除openfire for苹果,彻底卸载!
早前在MAC上安装了一个名为openfire的服务插件,用这个进行一些插件安装和设置,使ichat能登录MSN帐号.但现在最新的MSN已经有所改善,支持视频与语音,离线信息接收.而openfire有个 ...