OC基础:类的扩展.协议 分类: ios学习 OC 2015-06-22 19:22 34人阅读 评论(0) 收藏
//再设计一个类的时候,有些方法需要对外公开(接口),有些仅供内部使用.
类的扩展:为类添加新的特征(属性)或者方法
对已知类:
1.直接添加
2.继承(在其子类中添加实例变量和方法)
3.使用extension(对私有方法和私有属性的扩展(未在.h中申明的方法就是私有方法))
// extension
// 一般我们把类的延展直接写在类的.m文件中
// extension 对私有方法和私有属性的扩展(未在.h中申声的方法)
// 对已知类扩充私有方法,选择 Objective - C file
// 使用时要把头文件引入,类的延展里可以添加类的实例变量
对未知类:
category 分类,类名,为没有源代码的类添加方法,不能添加实例变量
总结:extension 和 category
1.extension为已知类添加私有属性和私有方法.category为没有源代码(未知类)的类添加方法.
2.extension可以添加实例变量(属性),category不能添加实例变量.
3.extension文件可有.h文件, category同时生成一对.h和.m文件
4.extension一般不写代码,写在类的.m文件
总结: category 和 subclass(子类)
1.category只能为类添加方法,subclass既能为类添加方法又能添加实例变量
2.category新添加的方法成为类的一部分,能被子类继承,subclass新添加的方法只有子类才有,父类不具有
3.category使用原始类的实例(-)或者原始类的调用方法(+),subclass只有子类才能使用
-------------------------------------Protocol 协议-----------------------------------------
只要遵守了协议即可成为代理
代理:自己不想干的事情让比人去做,别人充当的就是代理
如果一个类想要遵守一个协议,直接在.h文件中的父类后加<协议名>在协议里面,写必须遵守的方法和可选择遵守的方法
如:
@protocol BoyfriendProtocol <NSObject>
@required //必须实现的方法
-(void)makeMoney;
@optional //可选择的实现
-(void)cook;
//做饭
-(void)clean;
//清洁
-(void)funny;
//幽默
@end
版权声明:本文为博主原创文章,未经博主允许不得转载。
OC基础:类的扩展.协议 分类: ios学习 OC 2015-06-22 19:22 34人阅读 评论(0) 收藏的更多相关文章
- linux常用的压缩与解压缩命令 分类: 学习笔记 linux ubuntu 2015-07-05 19:38 38人阅读 评论(0) 收藏
1.gzip 压缩 gzip 是压缩文件,压缩之后文件后缀为.gz 用法:gzip 选项 [文件] 2.gunzip 解压 这个命令与gzip的功能刚好相反,这个是解压. 用法 gunzip 选项 [ ...
- linux中的网络通信指令 分类: 学习笔记 linux ubuntu 2015-07-06 16:02 134人阅读 评论(0) 收藏
1.write write命令通信是一对一的通信,即两个人之间的通信,如上图. 效果图 用法:write <用户名> 2.wall wall指令可将信息发送给每位同意接收公众信息的终端机用 ...
- ubuntu14.04使用root用户登录桌面 分类: 学习笔记 linux ubuntu 2015-07-05 10:30 199人阅读 评论(0) 收藏
ubuntu安装好之后,默认是不能用root用户登录桌面的,只能使用普通用户或者访客登录.怎样开启root用户登录桌面呢? 先用普通用户登录,然后切换到root用户,然后执行如下命令: vi /usr ...
- Raspberry Pi + 3个USB摄像头 + Motion(简易监控设备配置记录1——介绍以及安装) 分类: Raspberry Pi 服务器搭建 2015-04-12 19:21 226人阅读 评论(0) 收藏
参考: Debian官网链接 Motion官网链接 首先,参见Debian官网链接对Motion的介绍,网页中包含了所有相关依赖包,请首先确保这些依赖包的安装. Motion介绍 摘出对Motion的 ...
- linux中echo的用法 分类: 学习笔记 linux ubuntu 2015-07-14 14:27 21人阅读 评论(0) 收藏
1.echo命令我们常用的选项有两个,一个是-n,表示输出之后不换行,另外一个是-e,表示对于转义字符按相应的方式处理,如果不加-e那么对于转义字符会按普通字符处理. 2.echo输出时的转义字符 \ ...
- shell脚本调试 分类: 学习笔记 linux ubuntu 2015-07-14 12:49 53人阅读 评论(0) 收藏
1.sh -x script 这将执行脚本并显示所有变量的值 如,脚本: #!/bin/bash #a test about shift if [ $# -le 0 ] then echo " ...
- shell入门之函数应用 分类: 学习笔记 linux ubuntu 2015-07-10 21:48 77人阅读 评论(0) 收藏
最近在学习shell编程,文中若有错误的地方还望各位批评指正. 先来看一个简单的求和函数 #!/bin/bash #a test about function f_sum 7 8 function f ...
- shell入门之流程控制语句 分类: 学习笔记 linux ubuntu 2015-07-10 16:38 89人阅读 评论(0) 收藏
1.case 脚本: #!/bin/bash #a test about case case $1 in "lenve") echo "input lenve" ...
- shell入门之变量测试 分类: 学习笔记 linux ubuntu 2015-07-10 15:49 31人阅读 评论(0) 收藏
格式:test 测试条件 字符串测试: 注意空格: test str1 == str2 测试字符串是否相等 test str1 != str2 测试字符串是否不相等 test str1 测试字符串是否 ...
- shell脚本实现冒泡排序 分类: 学习笔记 linux ubuntu 2015-07-10 14:16 79人阅读 评论(0) 收藏
手动输入一行字符串,并对其排序. 脚本如下: #!/bin/bash #a test about sort echo "please input a number list" re ...
随机推荐
- 华中农业大学预赛 B Handing Out Candies 余数的和
Problem B: Handing Out Candies Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 258 Solved: 19[Submit ...
- Couldn't find an AF_INET address for
vim ~/.bashrc #输入内容 export ROS_HOSTNAME=你的hostname export ROS_MASTER_URI=http://(目标主机的IP):11311 expo ...
- Python day10 global关键字、函数递归、匿名函数、map函数的用法详解
1.global关键字 引用全局变量,在局部全局变量改变,也会改变,global相当于指针,将地址指向全局变量的name name='littlepage' def littepage(): glob ...
- SQL Timeout超时的处理方法
第一步:修改Web.config配置文件.在数据库连接字符串中加上连接时间Connect Timeout,根据实际情况定时间. <!--连接数据库--> <connectionStr ...
- spring boot: thymeleaf模板引擎使用
spring boot: thymeleaf模板引擎使用 在pom.xml加入thymeleaf模板依赖 <!-- 添加thymeleaf的依赖 --> <dependency> ...
- SQL 基础学习(2) Joining 和function , 作业没有做,需要看百宝箱。NOsql的概念
SQL 基础学习(2) Joining 可以同时关联(joining)多张表进行复杂的查询. 相比于用Rails捞出数据再用Ruby进行过滤组合,使用SQL更加高效,节能. 以下是 users has ...
- Sublime text3配置xdebug调试记录
第一次配置遇到的问题记录: 问题:配置php.ini的时候xdebug.remote_port = 9001刚开始我一直配置9000端口冲突,然后一切弄好了访问浏览器就一直在转圈无法访问: 现在开始配 ...
- 遍历HashMap的方法(四)
Map map = new HashMap(); for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) { Map.Entr ...
- Edraw安装图解
Edraw安装图解 Success
- Visual C++ 使用纪要
1.取消在查找中标记的蓝色小方块 Ctrl+Shift+F2 取消所有标记 2.出现LINK错误 : fatal error LNK1168: cannot open Debug/x.exe for ...