一、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. 使用HTTP协下载文件

    通过发送HTTP请求,下载文件 头文件: #ifndef __HTTP__ #define __HTTP__ #include <stdio.h> #include <stdlib. ...

  2. iptable防火墙配置

    /etc/sysconfig/iptables /etc/init.d/iptables {start|stop|restart|condrestart|status|panic|save} ipta ...

  3. 【缓存】EF4ProviderWrappers

    在Kooboo中使用了Entity Framework作为持久化框架,但由于EF1.0并没有提供完整缓存解决方案,一直以来都在为数据缓存而烦脑,在没有找到合适解决方案的情况下,采取了临时的解决办法:直 ...

  4. CentOS系统安装中文man手册

    http://jingyan.baidu.com/article/f25ef25466bffc482c1b82b6.html

  5. UITextView如何关闭键盘

    UITextField可以响应键盘上的完成按钮,关闭键盘,而UITextView不一样,它的return按钮或者Done按钮执行的是换行功能,不能达到关闭键盘的目的.解决方法有两个:一个是通过捕捉to ...

  6. Splash Screen开场屏在Android中的实现

    很多网友可能发现近期Tencent推出的手机QQ Android版包含了一个开场屏Splash Screen载入效果,通常游戏或大型软件打开时可能需要一个释放解析资源的过程,需要一个前台的动画播放和后 ...

  7. (四)、 nodejs中Async详解之一:流程控制

    为了适应异步编程,减少回调的嵌套,我尝试了很多库.最终觉得还是async最靠谱. 地址:https://github.com/caolan/async Async的内容分为三部分: 流程控制:简化十种 ...

  8. ADO.NET(很精彩全面)

    记录一下地址方便以后看http://www.cnblogs.com/liuhaorain/archive/2012/02/06/2340409.html

  9. android学习视频分享

    最近整理了大量的安卓开发学习资料,有书籍有视频有代码,老罗的第一季有点老了, 这里就给大家分享下老罗的第二季的视频教程吧,还有源码,初级到高级程序猿都有用. 下载地址:http://51pansou. ...

  10. MongoDB查询语法

    mongoDb是非关系型数据库,用习惯了mssql,mysql等数据库的需要转换一下思维 mongoDb存的是与js的json结构一样的文档,表中的每一条记录都可以结构不同 1,大于,小于,大于等于, ...