分類に属性を追加できるRuntime関連オブジェクト

1143 ワード

分類に属性を追加できるRuntime関連オブジェクト
関連APIは以下の通りである
  • 関連値
  • を設定する.
    /*
        object:    ,    self
        key:   ,           ,     static const void *   
        value:       
        policy:      ,    copy9
    */
    void objc_setAssociatedObje
    ct(id object, const void *key, id value, objc _AssociationPolicy policy)
    //  :
    // objc_setAssociatedObject(self, @selector(name), name, OBJC_ASSOCIATION_COPY_NONATOMIC);
    
  • 関連値
  • を取得する.
    /*
        object:    ,    self,                      
        key:   ,           
    */
    id objc_getAssociatedObject(id object, const void *key)
    //  : 
    //  objc_getAssociatedObject(self,@selector(name))
    
    
  • 関連付けを解除
  • void objc_removeAssociatedObjects(id object)
    

    関連ポリシー
    typedef OBJC_ENUM(uintptr_t, objc_AssociationPolicy){
    OBJC_ASSOCIATION_ASSIGN = 0,             //        ,         
    OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1,   //          ,      
    OBJC_ASSOCIATION_COPY_NONATOMIC = 3,     //       copy,      
    OBJC_ASSOCIATION_RETAIN = 01401,         //          ,       
    OBJC_ASSOCIATION_COPY = 01403            //       copy,       
    };