美文网首页iOS
Category与Extension

Category与Extension

作者: 说不出口的喵 | 来源:发表于2018-08-19 11:47 被阅读20次

1、Extension的基本用法

Extension的创建方法与Category一样,只要在原来选择Category选择Extension即可,比如我们为Person创建一个名为MyExtension的Extension,则最终会生成一个Person_MyExtension.h文件:

//  Person_MyExtension.h#import"Person.h"@interfacePerson()@end

但要注意的是和Category不同的是它不会生成Person_MyExtension.m文件。之后我们可以在Person_MyExtension.h中直接添加成员变量、属性和方法,如下:

//  Person_MyExtension.h#import"Person.h"@interfacePerson(){NSString* _address;}@property(nonatomic)NSIntegerage;-(NSString*)WhereAmI;@end

他常用的形式不是创建一个单独的文件,而是在实现文件中添加私有的成员变量、属性和方法。例如:

//  Person.m#import"Person.h"/////////Extension start///////////@interfacePerson(){NSString* _address;}@property(nonatomic)NSIntegerage;-(NSString*)WhereAmI;@end/////////Extension end///////////@implementationPerson-(NSString*)WhereAmI{return@"谁知道你在哪里";}@end

2、Extension与Category区别

Extension

在编译器决议,是类的一部分,在编译器和头文件的@interface和实现文件里的@implement一起形成了一个完整的类。

伴随着类的产生而产生,也随着类的消失而消失。

Extension一般用来隐藏类的私有消息,你必须有一个类的源码才能添加一个类的Extension,所以对于系统一些类,如NSString,就无法添加类扩展

Category

是运行期决议的

类扩展可以添加实例变量,分类不能添加实例变量

原因:因为在运行期,对象的内存布局已经确定,如果添加实例变量会破坏类的内部布局,这对编译性语言是灾难性的。

何形式的转载都请联系作者获得授权并注明出处。

相关文章

  • Objective-C 扩展与关联对象

    一、类扩展分析 1.1 category 与 extension category和extension开发中经常遇...

  • 深入分析 Category

    简介 Category 主要作用 Category 与 Class Extension Category 加载时机...

  • iOS Category详解

    Extension详解,及与Category的区别 1、什么是Category? category是Objecti...

  • Objective-C 之Extension

    Objective-C 之Extension class extension:类扩展 类扩展与 category ...

  • UI基础知识

    分类(类别/Category)与类扩展(Extension) 一、分类(类别/Category) 1. 适用范围 ...

  • Swift - 基础之extension

    在swift中,extension与Objective-C的category有点类似,但是extension比起c...

  • Category与Extension

    在Objective-C中,要扩展一个类的方法,首先想到的应该是继承,这是面向对象语言的一个特性。继承可以很方便的...

  • Category与Extension

    1、Extension的基本用法 Extension的创建方法与Category一样,只要在原来选择Categor...

  • extension与category

    1、形式上来看,extension是匿名的category。 2、extension里声明的方法需要在main i...

  • Category与Extension

    Category概述:Category是OC2.0之后添加的语言特性,Category又叫类别,分类等,能够在不改...

网友评论

    本文标题:Category与Extension

    本文链接:https://www.haomeiwen.com/subject/fhlciftx.html