zoukankan      html  css  js  c++  java
  • iOS-category

    关于category一直都很迷惑,可能是因为用的少,,,

    http://book.51cto.com/art/201105/262265.htm   介绍category的文章

    SVPullToRefresh深入理解 有关于给category添加属性的介绍

    category是一种扩展类的机制,可以给一个写好的类添加方法

     

    例如

    你想给一个button写一个方法,调用方法改变button背景色

    这时候就可以使用category

     

    创建一个category的方法:

    创建出来的就是一个UIButton的类别,然后在类别中写需要添加的方法

    .h文件

    .m文件

    如何在类别中添加属性

    类别中是不能添加属性的,但是可以使用associative(关联)的方法,利用get/set方法来模拟一个属性,但它不是属性;正常的属性对应一个实例变量,在对象实例内部,而关联的属性其实实在其他地方占据了一块内存,当前实例能够通过get/set方法访问和修改它

    Associative和Category同属于Runtime的运用,只是Category属于语法级别的封装,使用起来非常方便;而要使用Associative则必须手动调用一些相关方法,这些方法都可以在<objc/runtime.h>中找到。

    所以,在添加属性的时候需要import <objc/runtime.h>框架

    主要使用的是两个方法

    设置属性

    第一个参数是原始对象,第二个参数是关联对象的key,第三个参数是关联对象本身,第四个参数是关联的策略。

    如果第三个参数是nil,则清空当前关联。

    访问属性

    第一个参数是原始对象,第二个参数是关联对象的key

    例子

    另一个扩展类的机制是extension

    在.m文件的最上方来添加属性和方法,相当于私有属性和方法,只能本类调用

  • 相关阅读:
    okhttp之源码学习1
    Retrofit2之源码解析2
    Retrofit2之源码解析1
    retrofit之笔记内容
    retrofit之基本笔记
    retrofit之基本内容
    rxjava-源码分析
    rxjava-基本内容解析
    rxjava_几类转换
    java几种常见的编码
  • 原文地址:https://www.cnblogs.com/chebaodaren/p/5264782.html
Copyright © 2011-2022 走看看