一、Category
     1、Category:也叫分类,类目。是为没有源代码的类扩充功能。扩充的功能会成为原有类的一部分,可以通过原有类或者原有的对象直接调用,并且可继承。
     2、注意:
          1)该方式只能扩充方法,不能扩充实例变量,@property(可能编译不报错,但是运行有问题)。
          2)分类可以访问原来类中的成员。
          3)如果分类和原来类出现同名的方法,优先调用分类中的方法,原来类中的方法会被忽略。
          4)多个类目中有同名的方法的时候执行的是最后编译的那个类目的同名方法。
  
  
  
二、Extension
     1、为能够获得源代码的类添加私有的实例变量和方法。
     2、注意:延展操作的类必须是能够获得源代码的类(具有.m文件的类)。
     3、Category和Extension的区别
          1)作用不同:Category是扩展类的功能的,Extension是用来给类声明私有方法和实例变量的
          2)Category存放在一堆.h .m文件中,Extension存放在.m文件中
          3)Extension可以添加实例变量,Category不可以
    
    
三、delegate设计模式
     1、delegate设计模式的使用我们首先需要明白三个要素-委托方,代理方,协议。
          1)委托方:委托别人去执行某些操作的人(对象)。
          2)协议(Protocol):委托方需要代理方执行的操作。
          3)代理方:被委托去执行某些操作的人(对象)。
     2、协议是一套标准(一堆方法的声明),只有.h文件。协议的定义以@protocol开始,以@end结束。比如:声明一个结婚协议。    
  @protocol MarryProtocol <NSObject>
  @required
  - (void)makeMoney; // 赚钱
  @optional
  - (void)cooking; // 做饭

  @end
     3、
          1)步骤1:委托方制定一套协议(在委托方的.h文件中),协议中声明委托方需要让代理方执行的方法(只有方法声明)。
          2)步骤2:委托方声明一个delegate属性(assign修饰),存储代理方对象。
          3)步骤3:代理方需要遵守协议,并且对协议中的方法进行实现。
          4)步骤4:将代理方设置为委托方的代理人(将代理方对象赋值给委托方对象的delegate属性,进行存储)。
          5)步骤5:委托方在合适的时机通知代理方对象去执行相应的操作。
 
          注:respondsToSelector:该方法判断对象是否能够对某一个选定的方法做出响应。
 
  

iOS学习之Object-C语言类的扩展的更多相关文章

  1. Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  2. iOS学习08之C语言内存管理

    本次主要学习和理解C语言中的内存管理 1.存储区划分 按照地址从高到低的顺序:栈区,堆区,静态区,常量区,代码区 1> 栈区:局部变量的存储区域 局部变量基本都在函数.循环.分支中定义 栈区的内 ...

  3. iOS学习07之C语言指针

    本次随笔主要是为了学习和理解C语言中的指针,指针树状图如下: 1.访问数据的两种方式 1> 直接访问:定义变量后,直接访问变量 ; printf("a = %d\n", a) ...

  4. IOS学习笔记2—Objective C—类、属性、方法

    以下是我学习IOS开发的一些笔记和心得,贴出来和大家一同分享,也希望大家能补充和纠错,共同进步 有Android和IOS开发问题也希望能和大家交流! Objective-C 1.OC是一门基于C的面向 ...

  5. 【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法

    . 一. 类定义 类定义需要实现两部分 : -- 接口部分 : 定义类的成员变量和方法, 方法是抽象的, 在头文件中定义; -- 实现部分 : 引入接口部分的头文件, 实现抽象方法; 1. 接口部分定 ...

  6. ios学习之旅---c语言函数

    1.函数的概述 C源程序是由函数组成的. 尽管在前面各章的程序中大都仅仅有一个主函数main(),但有用程序往往由多个 函数组成. 函数是C源程序的基本模块,通过对函数模块的调用实现特定的功能. C语 ...

  7. 【IOS学习】【Swift语言】

    基本语法: OS X playground 引入 import Cocoa IOS playground 引入 import UIKit 基本数据类型 let 定义常量 定义完成之后无法修改 var ...

  8. iOS学习13之OC NSString类

    C语言中,字符串是有char(ASC||码)字符组成. OC中,字符串是由unichar(Unicode)字符组成. 1.字符串(NSString) NSString:不可变字符串,即:创建以后,内容 ...

  9. 李洪强iOS开发之零基础学习iOS开发】【02-C语言】01-概述

    前面已经给大家介绍了iOS开发相关的一些基础知识,其实iOS开发就是开发iPhone\iPad上的软件,而要想开发一款软件,首先要学习程序设计语言.iOS开发需要学习的主要程序设计语言有:C语言.C+ ...

随机推荐

  1. CI 自动提交表单

    //coontrol $this->load->view ( '/' . $this->index_lang ['FOLDER'] . '/eprepag_form.php', $p ...

  2. RGB颜色空间与YCbCr颜色空间的互转

    在人脸检测中会用到YCbCr颜色空间,因此就要进行RGB与YCbCr颜色空间的转换.在下面的公式中RGB和YCbCr各分量的值的范围均为0-255. RGB转到YCbCr: float y= (col ...

  3. mem中需找特定字符

    memstr //find 'substr' from a fixed-length buffer //('full_data' will be treated as binary data buff ...

  4. boost实现串口通信(一):小试牛刀

    /************************************************************************/ /* 功能:boost实现串口通信类 */ /* ...

  5. Velocity语法大全

    1\ 参考地址:http://www.cnblogs.com/codingsilence/archive/2011/03/29/2146580.html

  6. JSON对象遍历方法

    JSON对象提前不知道其属性和结构,遍历其值 var json2 = { "name": "txt1", "name2": "tx ...

  7. .NET中的计时器控件Timer

    本章借介绍一些粗浅的Timer控件使用方法. 介绍Timer控件的常用属性和事件 1. Interval 属性表示 Timer控件的时间间隔. 类型是int默认是毫秒. 2. Enabled 属性 表 ...

  8. 在VMware中安装RHEL6.2(下)—— RHEL系统安装

    一. 打开安装好的虚拟机,因为上一篇我们未设置任何RHEL的安装源,所以它会如下图提示: 二. 图上标识为两种更改光盘设置的方法,物理或虚拟光盘皆可. 1. 选择①: 2. 选择②,点击设置...: ...

  9. centos -bash-4.1$ 不显示用户名路径

    1.在Terminal输入: vi ~/.bash_profile 2.如果没有.bash_profile可以自己添加.然后往文件中添加如下内容: export PS1=’[\u@\h \W]$ 注意 ...

  10. EXT格式误删除恢复

    http://hatemysql.com/ 1.从/proc文件系统恢复数据#lsof |grep -i deletecat 11791 root 1w REG 253,0 94 1048589 /h ...