一、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. Accessing the Deep Web: A Survey

    http://www.inf.ufsc.br/~ronaldo/deepWeb/querying/Chang-dwsurvey-cacm07.pdf

  2. 智能指针(一):STL auto_ptr实现原理

    智能指针实际上是一个类(class),里面封装了一个指针.它的用处是啥呢? 指针与内存 说到指针自然涉及到内存.我们如果是在堆栈(stack)中分配了内存,用完后由系统去负责释放.如果是自定义类型,就 ...

  3. APUE第五章:标准IO库

    5.2流和file对象 #include <wchar.h> int fwide(FILE *fp, int mode); Returns: positive if stream is w ...

  4. Leetcode 0025. Reverse Nodes in k-Group

    居然把头插法写错了,debug了一个多小时 /** * Definition for singly-linked list. * struct ListNode { * int val; * List ...

  5. HDOJ1010(BFS)

    //为什么bfs不行呢,想不通 #include<cstdio>#include<cstring>#include<queue>using namespace st ...

  6. C# 特性Attributes 和反射

    一,Attributes 类新建一个子类,DetailAttributes 二, 在类的属性声明上面加Attributes public class testAttributes { [Detail( ...

  7. 一步一步学习SignalR进行实时通信_1_简单介绍

    一步一步学习SignalR进行实时通信\_1_简单介绍 SignalR 一步一步学习SignalR进行实时通信_1_简单介绍 前言 SignalR介绍 支持的平台 相关说明 OWIN 结束语 参考文献 ...

  8. 【SMS】移动短信网关返回信息状态代码说明【China Mobile】

    1 由SMSC返回的一般结果状态报告 含义 说明 处理建议DELIVRD 消息发送成功 用户成功接收到短信 ??EXPIRED 因为用户长时间关机或者不在服务区等导致的短消息超时没有递交到用户手机上 ...

  9. Objective-C数据类型、数据类型转换

    数据类型 1.Objective-C数据类型可以分为:基本数据类型.对象数据类型和id类型. 2.基本数据类型有:int.float.double和char类型. 3.对象类型就是类或协议所声明的指针 ...

  10. ARC————自动引用计数

    一.内存管理/引用计数 1.引用计数式内存管理的方式(下面四种) 对象操作 OC方法 生成并持有对象 alloc/new/copy/mutableCopyd等方法 持有对象 retain方法 释放对象 ...