美文网首页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