zoukankan      html  css  js  c++  java
  • 管理关联对象和NSDictionary区别

    一、问题引出

    为类添加关联对象:

    void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)

    为NSDictionary添加对象:

    - (void)setObject:(ObjectType)anObject forKey:(KeyType <NSCopying>)aKey;

    objc_setAssociatedObject可以理解为给object对象(NSDictionary),采用policy策略添加key-value记录。

    二、区别

    1、方法入参数中的key,分别是不透明指针和对象。对象只用调用isEqual:方法返回YES,NSDictionary视为同一记录。而不透明指针必须是完全相同的指针,才能找到同一个关联的对象。

    2、基于第一点,objc_setAssociatedObject的入参key,必须是静态全局变量,如static void *associatedKey = "associatedkey";

  • 相关阅读:
    【Dos-BatchPrograming】04
    【Dos-BatchPrograming】03
    【Dos-BatchPrograming】02
    【Dos-BatchPrograming】01
    【perl】01
    【Linux】Re04
    【Linux】Re03
    【Linux】Re02
    【Linux】Re01
    【C++】01
  • 原文地址:https://www.cnblogs.com/zhouyi-ios/p/7085964.html
Copyright © 2011-2022 走看看