学习switf 对象关联 objc_setAssociated

2017-11-02  本文已影响3人  Faith_K

swif版本

import UIKit

extension  UIView {

    private struct assKey {
        static let keyName = "keyName"
    }
    
    var name : String!{
        get {
            return objc_getAssociatedObject(self, assKey.keyName) as? String
        }
        set (name){
            if let name = name {
                objc_setAssociatedObject(self, assKey.keyName, name, objc_AssociationPolicy.OBJC_ASSOCIATION_COPY_NONATOMIC)
            }
        }
    }

}

OC版本

.h

#import <UIKit/UIKit.h>

@interface UIView (AddView)

@property (copy, nonatomic) NSString *name;
@end

.m
#import "UIView+AddView.h"
#import <objc/runtime.h>

@implementation UIView (AddView)
static char assKey;
- (void)setName:(NSString *)name{
    //关联对象
    objc_setAssociatedObject(self, &assKey, name, OBJC_ASSOCIATION_COPY_NONATOMIC);
}

- (NSString *)name{
    //获取
    return  objc_getAssociatedObject(self, &assKey);
}
上一篇 下一篇

猜你喜欢

热点阅读