前言
项目中自己通过各种渠道及结合项目的经验整理了一套自己的工具包,里面有各种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
我的公众号二维码
网友评论