美文网首页iOS Coding
iOS NSObject的Category

iOS NSObject的Category

作者: 王隆帅 | 来源:发表于2016-03-14 10:52 被阅读509次

    前言

    项目中自己通过各种渠道及结合项目的经验整理了一套自己的工具包,里面有各种Category,及封装的方法,方便项目使用,这段时间我会陆续分享出来,希望能帮助到有需求的人YoY 。

    NSObject+LSCore.h

    //
    //  NSObject+LSCore.h
    //  LSCoreFramework
    //
    //  Created by 王隆帅 on 15/5/8.
    //  Copyright (c) 2015年 王隆帅. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface NSObject (LSCore)
    
    #pragma mark- associated
    - (id)uxy_getAssociatedObjectForKey:(const char *)key;
    - (id)uxy_copyAssociatedObject:(id)obj forKey:(const char *)key;
    - (id)uxy_retainAssociatedObject:(id)obj forKey:(const char *)key;
    - (id)uxy_assignAssociatedObject:(id)obj forKey:(const char *)key;
    - (void)uxy_removeAssociatedObjectForKey:(const char *)key;
    - (void)uxy_removeAllAssociatedObjects;
    
    @end
    
    

    NSObject+LSCore.m

    //
    //  NSObject+LSCore.m
    //  LSCoreFramework
    //
    //  Created by 王隆帅 on 15/5/8.
    //  Copyright (c) 2015年 王隆帅. All rights reserved.
    //
    
    #import "NSObject+LSCore.h"
    #import <objc/runtime.h>
    
    @implementation NSObject (LSCore)
    
    #pragma mark- associated
    - (id)uxy_getAssociatedObjectForKey:(const char *)key
    {
        const char * propName = key;
        id currValue = objc_getAssociatedObject( self, propName );
        return currValue;
    }
    
    - (id)uxy_copyAssociatedObject:(id)obj forKey:(const char *)key
    {
        const char * propName = key;
        id oldValue = objc_getAssociatedObject( self, propName );
        objc_setAssociatedObject( self, propName, obj, OBJC_ASSOCIATION_COPY );
        return oldValue;
    }
    
    - (id)uxy_retainAssociatedObject:(id)obj forKey:(const char *)key;
    {
        const char * propName = key;
        id oldValue = objc_getAssociatedObject( self, propName );
        objc_setAssociatedObject( self, propName, obj, OBJC_ASSOCIATION_RETAIN_NONATOMIC );
        return oldValue;
    }
    
    - (id)uxy_assignAssociatedObject:(id)obj forKey:(const char *)key
    {
        const char * propName = key;
        id oldValue = objc_getAssociatedObject( self, propName );
        objc_setAssociatedObject( self, propName, obj, OBJC_ASSOCIATION_ASSIGN );
        return oldValue;
    }
    
    - (void)uxy_removeAssociatedObjectForKey:(const char *)key
    {
        const char * propName = key;
        objc_setAssociatedObject( self, propName, nil, OBJC_ASSOCIATION_ASSIGN );
    }
    
    - (void)uxy_removeAllAssociatedObjects
    {
        objc_removeAssociatedObjects( self );
    }
    
    @end
    
    

    我的公众号二维码

    相关文章

      网友评论

        本文标题:iOS NSObject的Category

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