1、分类 category

  • 分类的作用就是在不修改原有类的基础上,为一个类扩展方法,最主要的是可以给系统类扩展我们自己定义的方法
  • 分类也能使用@property 添加属性 【通过runtime 关联对象实现】 需要手动写变量的setter和getter方法,否则添加的成员变量无法使用。因为在分类中不会生成setter和getter方法,也不会生成以及实现私有的成员变量 如果直接访问其成员变量 程序会报错
  • 分类头文件中实现的方法必须在m文件中实现 不然会报错
  • 如果分类中有和原有类同名的方法,会优先调用分类中的方法,就是说会忽略原有类的方法。所以同名方法调用的优先级为:分类>本类>父类
  • 如果两个分类中包含了同一个方法、 后编译的代码会优先调用build phases 中能控制顺序  【编译时分类方法会合并到方法列表中、根据源码所知、后编译的方法会优先调用】
  • 分类是在运行时添加到类中

2、扩展 extension

  • 类扩展不仅可以增加方法,还可以增加实例变量(或者属性)
  • 扩展是在编译阶段被添加到类中
  • 扩展是依赖于宿主文件、宿主中只要引入类扩展 该宿主文件就可以使用扩展中的属性和方法了
  • 原则上扩展只对当前类有用、如果是一个父类.m中倒入了扩展 那子类也能使用、但是父类不倒入 、子类直接倒入会报错

iOS 扩展与分类的区别的更多相关文章

  1. iOS - 类扩展与分类的区别

    类扩展 (Class Extension也有人称为匿名分类) 作用: 能为某个类附加额外的属性,成员变量,方法声明 一般的类扩展写到.m文件中 一般的私有属性写到类扩展 使用格式: @interfac ...

  2. iOS中的分类(category)和类扩展(extension)

    今天在研究swift的时候看到了分类和扩展.这是两个十分重要有用的功能,但是之前用的不多,没有深入了解过,在今天就从头理一遍. 一.分类(Category): 概念: 分类(Category)是OC中 ...

  3. iOS中的分类和扩展

    一.什么是分类? 概念:分类(Category)是OC中的特有语法,它是表示一个指向分类的结构体指针.根据下面源码组成可以看到它没有属性列表,原则上是不能添加成员变量(其实可以借助运行时功能,进行关联 ...

  4. iOS仿京东分类菜单之UICollectionView内容

    在上<iOS仿京东分类菜单实例实现>已经实现了大部分主体的功能,本文是针对右边集合列表进行修改扩展,使它达到分组的效果,本文涉及到的主要是UICollectionView的知识内容,左边列 ...

  5. 关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol

    关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol 2014-02-18 19:57 315人阅读 评论(0) 收藏 举报 1.category, ...

  6. ios标准开发者账号 ios企业开发者账号的区别总结

    ios标准开发者账号 ios企业开发者账号的区别总结   ios标准开发者项目 1.ios标准开发者项目账号可以发布到app store 2.ios标准开发者项目分为两种:①个人开发者②公司/机构开发 ...

  7. php扩展memcache和memcached区别?以及memcached软件的介绍

    引用“http://www.vicenteforever.com/2012/03/memcache-different-memcached/” memcached是一个软件,而PHP包括了memcac ...

  8. iOS exit(),abort(),assert()函数区别

    iOS exit(),abort(),assert()函数区别 exit() 退出程序 abort() 停止程序, assert()检查里面的参数如果为nil抛出异常:

  9. OC基础:类的扩展.协议 分类: ios学习 OC 2015-06-22 19:22 34人阅读 评论(0) 收藏

    //再设计一个类的时候,有些方法需要对外公开(接口),有些仅供内部使用. 类的扩展:为类添加新的特征(属性)或者方法 对已知类: 1.直接添加 2.继承(在其子类中添加实例变量和方法) 3.使用ext ...

  10. .html 、.htm 、 .shtml 以及 .shtm 四种扩展名的文件区别

    新增了一个分类,叫做 Personals,中文我把它解释成 "个人恶趣味",这里将记载一些对工作无关紧要,但是个人又一时有兴趣了解的东西. 今天要讲的是如题的 4 种扩展文件的区别 ...

随机推荐

  1. mysql 当年所有月份列表

    -- 不依赖任何表,只是用mysql自带函数方法select concat((select year(now())),'-01') as `date`union select concat((sele ...

  2. Linux 服务器内存异常问题记录

    一.内存异常 1. 问题描述:服务器内存一会儿就增加1G,但也没有看到有消耗内存较大的进程:最后联想到项目最近做ARM架构适配,有变更代码,立马想到使用的SSH组件,一查看就发现有大量的进程: 解决办 ...

  3. <input>输入框,限制输入的为正整数

    <input id="eventId" col="EventId" type="text" class="form-cont ...

  4. Linux-jar操作脚本

    service.sh 使用说明: ./service.sh start ./service.sh stop #!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 APP_NAME= ...

  5. java学习:八大基本类型变量

    1.类 在java中用class来定义一个类,类是java程序的基本单位 类描述的是具有共性的一类事物,所以我们又可以把类称作为模板技术   如何理解共性: 具有相同的属性-->java变量 具 ...

  6. Libusb测试USB device(2)

    因为测试的比较混乱,我就按照我的问题导向来描述我的过程吧 一. 提示libusb_context对象为NULL的错误: 在简化的过程中,我没有加入dev_handler判断为空就进行了具体的工作: 1 ...

  7. IO流(1)

    IO流(1) 目录 IO流(1) 文件 创建文件 获取文件信息 目录的操作和文件删除 文件 文件流 文件在程序中以流的形式来操作 输入流:数据从数据源(文件)到程序(内存)的路径 输出流:数据从程序( ...

  8. Drift Programming | 漂移编程 | 哲学编程 | 架构设计 | TDD |DDD |Microservice

  9. cnblogs.com/linycat

    核心技术 Java MySQL SSM SpringBoot MyBatisPlus Redis RabbitMQ Git Google ChatGPT 分布式架构 分布式会话 单点登录 分布式锁 读 ...

  10. sxt_(008_011)_servlet

    一.servlet简介 Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于 ...