本类从三个方面介绍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. docker-compose使用volume部署mysql时permission deny问题解决

    问题整体情况为使用docker做mysql的容器,然后结合其他服务一起通过docker-compose启动,并且为了一次性建表和设置用户权限我又在mysql中封装了setup.sh.schema.sq ...

  2. ef 吐糟

    方法:从dbcontext到objectcontext DbContext及其相关的API是EF4.1中一大新特性.简单说,DbContext就是之前EF的核心类ObjectContext的抽象封装. ...

  3. docker entrypoint入口文件详解

    docker entrypoint入口文件详解 pasting Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较 [k8s]args指令案例-彻底理解docke ...

  4. go中redis使用小结

    最近做了个关于redis的项目,那么就整理下遇到和未遇到的问题 1.redis的简介安装 2.redis的数据结构 3.Redis基本使用 4.Redis的并发 5.Redis的落地 一.redis的 ...

  5. python的68个内置函数

    内置函数 内置函数就是python给你提供的, 拿来直接用的函数, 比如print., input等. 截止到python版本3.6.2 python一共提供了68个内置函数. #68个内置函数 # ...

  6. [UE4]让子弹产生伤害

  7. zabbix监控ESXI主机(可用)

    ESXI6.0默认SSH关闭的,打开SSH的方法如下图: SSH打开后,主机会有警报,关闭警报的方法如下图 esxcli system  snmp  set  --communities  publi ...

  8. Linux安装MySQL8.0.12之二进制安装

    运行环境:centos 7.5 + mysql8.0.12 1.下载官方打包好的二进制安装包: wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysq ...

  9. java下载excel,excel从数据库获取数据

    <!-- poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId&g ...

  10. 1-Lombok工具使用

    1.先给Eclispe安装Lombok插件 首先下载 lombok-1.16.6.jar 这个jar包  存放在系统任意盘里面  我这里是放在  c:\lombok-1.16.6.jar 运行命令 点 ...