前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >给系统类扩展属性(枚举)或方法

给系统类扩展属性(枚举)或方法

作者头像
developerbfl
发布2018-06-05 15:21:39
9690
发布2018-06-05 15:21:39
举报
文章被收录于专栏:iOS 开发
在这里我以UIButton为例子给大家展示一种实现方法,主要依靠runtime实现。废话不说上码...

1.扩展一般属性NSString

代码语言:javascript
复制
@interface UIButton (CJButtonType)
@property (nonatomic, strong) NSString *typeString;
@end
///////////////////////////////////////////////
#import "UIButton+CJButtonType.h"
#import <objc/runtime.h>
@implementation UIButton (CJButtonType)
- (NSString *)typeString {
    return objc_getAssociatedObject(self, @selector(typeString));
}
- (void)setTypeString:(NSString *)typeString {
    objc_setAssociatedObject(self, @selector(typeString), typeString, OBJC_ASSOCIATION_RETAIN_NONATOMIC);   
}
@end

2.扩展枚举类型

代码语言:javascript
复制
#import <UIKit/UIKit.h>
typedef NS_ENUM(NSUInteger, BuyHouseCalculatorType) {
    BuyHouseCalculatorType_PublicReserveFundLoan = 0, 
    BuyHouseCalculatorType_BusinessLoan,              
    BuyHouseCalculatorType_GroupLoan                  
};
@interface UIButton (CJButtonType)
@property (nonatomic, assign) BuyHouseCalculatorType buyHouseCalculatorType;
@end

#import "UIButton+CJButtonType.h"
#import <objc/runtime.h>
// 定义全局静态字符作为关联的Key值
const char *buyHouseCalculatorTypeKey = "buyHouseCalculatorTypeKey";
@implementation UIButton (CJButtonType)
- (void)setBuyHouseCalculatorType:(BuyHouseCalculatorType)buyHouseCalculatorType {
    objc_setAssociatedObject(self, buyHouseCalculatorTypeKey, @(buyHouseCalculatorType), OBJC_ASSOCIATION_ASSIGN);
}
- (BuyHouseCalculatorType)buyHouseCalculatorType {
    return [objc_getAssociatedObject(self, buyHouseCalculatorTypeKey) integerValue];
    
}
@end

3.扩展方法

代码语言:javascript
复制
//// .h
+ (UIButton *)button;
+ (UIButton *)buttonWithTitle:(NSString *)title titleColor:(UIColor *)color;
////  .m
+ (UIButton *)button {
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectZero];
    [button setClipsToBounds:YES];
    [button setExclusiveTouch:YES];
    return button;
}
+ (UIButton *)buttonWithTitle:(NSString *)title titleColor:(UIColor *)color {
    UIButton *button = [UIButton button];
    [button setTitle:title forState:UIControlStateNormal];
    [button setTitleColor:color forState:UIControlStateNormal];
    return button;
}

以上是鄙人的小小见解,喜欢的朋友可以互粉一起学习。。。。。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.08.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在这里我以UIButton为例子给大家展示一种实现方法,主要依靠runtime实现。废话不说上码...
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档