码迷,mamicode.com
首页 > 移动开发 > 详细

iOS开发——实用技术OC篇&给分类增加属性

时间:2015-09-15 12:38:47      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

给分类增加属性


关于分类的创建这里就不扯了,咱们直接开干

这里以文本看占位文字颜色为例
一:简单方式(关键技术:KVC)
1.在头文件定义一个属性

1 @property (nonatomic, strong) UIColor *placeholderColor;
2 /**
3  *  分类中只会产生属性对应Setter和Getter方法的声明,不会有实现,需要我们自己实现
4  */
5 //-(void)setPlaceholderColor:(UIColor *)placeholderColor;
6 //-(UIColor *)placeholderColor;


2.定义一个静态常量,用于下面属性的设置
 1 static NSString * const placeholderColorkey = @"placeholderLabel.textColor"; 

3.实现这个属性的setter和getter属性(在分类中系统不会帮我们实现的)

 1 -(void)setPlaceholderColor:(UIColor *)placeholderColor
 2 {
 3     BOOL change = NO;
 4     
 5     if (self.placeholder == nil) {
 6         self.placeholder = @" ";
 7         change = YES;
 8     }
 9     
10     [self setValue:placeholderColor forKeyPath:placeholderColorkey];
11     
12     if (change) {
13         self.placeholder = nil;
14     }
15 }
16 
17 -(UIColor *)placeholderColor
18 {
19     return [self valueForKeyPath:placeholderColorkey];
20 }



二:装逼方式(关键技术:运行时)

1.在头文件定义一个属性 

1 @property (nonatomic, strong) UIColor *placeholderColor; 

2.导入运行时库

 1 #import <objc/runtime.h> 

实现setterg和getter方法使用管理对象技术实现数据的关联

 1 -(void)setPlaceholderColor:(UIColor *)placeholderColor
 2 {
 3     /**
 4      *  关联对象:1
 5      */
 6      objc_setAssociatedObject(self, &placeholderColorkey, placeholderColor, OBJC_ASSOCIATION_ASSIGN);
 7 }
 8 
 9 -(UIColor *)placeholderColor
10 {
11     /**
12      *  关联对象:2
13      */
14      return objc_getAssociatedObject(self, &placeholderColorkey);
15 }

关于更多运行时相关技术情查看笔者前面的相关文章

 

 

 

iOS开发——实用技术OC篇&给分类增加属性

标签:

原文地址:http://www.cnblogs.com/iCocos/p/4809723.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!