【OC】Runtime使用心得

一、给类目加属性时

#import <UIKit/UIKit.h>

@interface UITapGestureRecognizer (NSString)
@property(nonatomic,strong)NSString *dataStr;
@end
#import "UITapGestureRecognizer+NSString.h"
#import <objc/runtime.h>
static char * personNameKey = "personNameKey";

@implementation UITapGestureRecognizer (NSString)

- (void)setDataStr:(NSString *)dataStr{
//    objc_setAssociatedObject(self, personNameKey, dataStr, OBJC_ASSOCIATION_COPY_NONATOMIC);
    objc_setAssociatedObject(self, @selector(dataStr), dataStr, OBJC_ASSOCIATION_COPY_NONATOMIC);
}

- (NSString*)dataStr {
    return objc_getAssociatedObject(self, _cmd);
//    return objc_getAssociatedObject(self, personNameKey);
}
@end

二、交换方法时

@implementation UITableView (CNEmpty)
+ (void)load{
    [self changeSEL];
}

+ (void)changeSEL{
    Method formMethod = class_getInstanceMethod(self, @selector(reloadData));
    Method toMethod = class_getInstanceMethod(self, @selector(cn_reloadData));
//    if (class_addMethod(self, @selector(reloadData), method_getImplementation(toMethod), method_getTypeEncoding(toMethod))){
        method_exchangeImplementations(formMethod, toMethod);
//    }
}

- (void)cn_reloadData{
    [self cn_reloadData];
    [self addOrMoveEmptyView];

}

-(void)setHalvingLine:(UITableViewCell *)cell{
    if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
        [cell setSeparatorInset:UIEdgeInsetsZero];
    }

    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
        [cell setLayoutMargins:UIEdgeInsetsZero];
    }
}
@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值