本类从三个方面介绍iOS中的类别,分别是  什么是类别;类别的语法;类别的作用。具体内容如下:

一、类别:

类的补丁:当不能获取现有类的源码,但需要对现有类的功能进行补充时,这种情况下使用类别。

类别只能添加方法,不能添加成员变量。

类别中不提倡使用@property,@property在类别中使用时,不能生成对应的私有变量,因为类别中不能声明成员变量。

例如:对NSString进行加密MD5,这种情况下不能获取NSString的源码,但需要为其添加加密功能,则可以使用类别实现。

二、类别语法

 @interface class_name (category_name)

 @end

例如:

 @interface NSString (HelloWOrld)
- (void)helloWorld;
@end @implementation NSString (HelloWOrld)
- (void)helloWorld {
  NSLog(@"hello world....");
}
@end

表示通过类别为现有类NSString添加helloWorld方法。

 NSString *str = @"zhang";
[str helloWorld];

iOS中实现类别的关键步骤如下:

1.选择Objective-C File,点击next.

2.在File中填写类别名称,在File Type中选择Category,在Class中选择需要进行扩展的现有类,最后点击next。

三、类别的作用
1.使用类别为一个类的“隐藏方法,即未在.h中声明的方法”添加声明。

2.分散一个大型的类,即当类中的方法过多时,可以将方法的声明和实现放到类别中实现,从而达到分散一个大型类的作用。

注意:类别方法的优先级比类本身方法的优先级要高,即类别和类本身中拥有相同的方法时,有限调用类别内的方法。

3.创建非正式协议,类似Java中的接口。

iOS基础知识之类别的更多相关文章

  1. iOS面试必备-iOS基础知识

    近期为准备找工作面试,在网络上搜集了这些题,以备面试之用. 插一条广告:本人求职,2016级应届毕业生,有开发经验.可独立开发,低薪求职.QQ:895193543 1.简述OC中内存管理机制. 答:内 ...

  2. iOS - 基础知识总结(OC版) 面试必看 再不看就要用swift了

    OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装.继承.多态.它既具有静态语言的特性(如C++),又有动态语言的效率(动态绑定.动态加载等).总体来讲,OC确实是一门不错 ...

  3. ios基础知识

    1获取系统语言设置 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; NSArray *languages = ...

  4. iOS 基础知识

    1获取系统语言设置 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; NSArray *languages = ...

  5. iOS基础知识之属性及属性关键字

    iOS属性及属性关键字 一.属性功能:1.给现有的成员变量生成一对setter/getter方法.2.如果没有声明成员变量,自动声明一个_属性名的私有变量(默认的成员变量是受保护的). 二.属性关键字 ...

  6. 【IOS基础知识】NSTimer定时器使用

    1.声明 NSTimer         *timer; 2.定义 timer = [NSTimerscheduledTimerWithTimeInterval:1.0ftarget:selfsele ...

  7. iOS基础知识之归档和解档

    归档和解档:即将数据写入文件和从文件中读取数据. 此处以plist文件为例说明, 一.plist文件使用时的注意事项: 1.plist文件中仅支持写入Array,Dictionary,Boolean, ...

  8. iOS基础知识之多态问题

    多态是基于继承而言的,例如自定义父类Person,子类Son,那么可能会出现如下情况: Person *p =[ [Son alloc]init]; 这种情况时,便是多态的使用.多态属于动态创建对象, ...

  9. iOS基础知识之排序

    1.字符串比较 - (NSComparisonResult)compare:(NSString *)str; 例如: NSString *str1 = @"zhangsan"; N ...

随机推荐

  1. Mysql 性能优化4 mysql参数配置

    mysql 参数的介绍 大概450项参数,大多保持默认就可以了 错误的参数 崩溃,错误,运行缓慢. 参数最好在生产环境前配置好.最好不要在生产环境 中 直接配置,有可能不会立即生效,或者之前的数据和配 ...

  2. Java序列化的理解与学习

    1.什么是Java序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比 JVM的生命周期更长.但在现实应 ...

  3. 关于Maven+Springmvc+Dubbo+Zookeeper整合

    为什么要用dubbo?   还是让官方来解释吧: http://dubbo.io/User+Guide-zh.htm   http://dubbo.io/   一般 nginx+tomcat  | - ...

  4. 【springboot】之将properties配置转为bean

    将springboot里面非application.yml 或者application.properties 里面的key-value转为JavaBean /** * @Describe: DataS ...

  5. googletest--Test Fixture

    前面博客中我们在单元测试之前会做一些变量初始化等工作,而同一个testcase的不同test之间往往会有一些初始化工作是相同的.我们不想做多余的重复的工作,当然同时也不想设置全局变量. 这个时候我们可 ...

  6. C++进阶--多继承

    //########################################################################### /* * 多继承 * * -- 一个类直接派 ...

  7. 【Shell】使用sed命令替换文件中的某一行

    原始文件内容 -bash-3.2# cat configTest.xml <?xml version="1.0" encoding="UTF-8"?> ...

  8. Ubuntu 14.10 下Spark on yarn安装

    1 服务器分布 服务器 说明 192.168.1.100 NameNode 192.168.1.101 DataNode 192.168.1.102 DataNode 2 软件环境 2.1 安装JDK ...

  9. PAT 乙级 1047 编程团体赛(20) C++版

    1047. 编程团体赛(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 编程团体赛的规则为:每个参赛队由若 ...

  10. MyBatis 多表查询

    1.多表设计 多表查询 a.多表设计 (1)一对一 在任意一方设计外键保存另一张表的主键,维系表和表的关系 (2)一对多 在多的一方设计外键保存一的一方的主键,维系表和表的关系 (3)多对多 设计一张 ...