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

给分类增加属性

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

这里以文本看占位文字颜色为例
一:简单方式(关键技术: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 }

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

时间: 2024-10-06 19:41:08

iOS开发——实用技术OC篇&给分类增加属性的相关文章

iOS开发——实用技术OC篇&amp;单例模式的实实现(ACR&amp;MRC)

单例模式的实实现(ACR&MRC) 在iOS开发中单例模式是一种非常常见的模式,虽然我们自己实现的比较少,但是,系统却提供了不少的到来模式给我们用,比如最常见的UIApplication,Notification等, 那么这篇文章就简单介绍一下,我们开发中如果想要实现单例模式要怎么去实现! 单例模式顾名思义就是只有一个实例,它确保一个类只有一个实例,并且自行实例化并向整个系统提供这个实例.它经常用来做应用程序级别的共享资源控制.这个模式使用频率非常高,通过一个单例类,可以实现在不同窗口之间传递数

iOS开发——实用技术OC篇&amp;多线程整合

多线程整合 本文知识对iOS开发中多线程的一些知识整合,关于一些概念和技术问题并没有过多的介绍,如果你想了解更多请查看笔者之前写的iOS开发之多线程详解(比较完整):但是有部分涉及到之前文章中没有的技术点和常识,比如加锁的方式,面试相关的,还有一些关于GCD的高级用法,希望你能认真看完,或许可以收获到很多! http://www.cnblogs.com/iCocos/p/4553103.html http://www.cnblogs.com/iCocos/p/4553262.html ??先来看

iOS开发——实用技术OC篇&amp;UIWebView与JS的交互

UIWebView与JS的交互 事情的起因还是因为项目需求驱动.折腾了两天,由于之前没有UIWebView与JS交互的经历,并且觉得这次在功能上有一定的创造性,特此留下一点文字,方便日后回顾. 我要实现这样一个需求:按照本地的CSS文件展示一串网络获取的带HTML格式的只有body部分的文本,需要自己拼写完整的HTML.除此之外,还需要禁用获取的HTML文本中自带的 < img > 标签自动加载,并把下载图片的操作放在native端来处理,并通过JS将图片在Cache中的地址返回给UIWebv

iOS开发——实用技术OC篇&amp;简单抽屉效果的实现

简单抽屉效果的实现 就目前大部分App来说基本上都有关于抽屉效果的实现,比如QQ/微信等.所以,今天我们就来简单的实现一下.当然如果你想你的效果更好或者是封装成一个到哪里都能用的工具类,那就还需要下一些功夫了,我们这里知识简单的介绍怎么去实现,不过一般我们开发都是找别人做好的,也没必要烂肺时间,除非你真的是大牛或者闲的蛋疼. 其实关于抽屉效果就是界面有三个View,其实一个主View其他两个分别是左边和右边的View,我们分别为他们添加手势,实现左右滑动显示对应的View. 一:所以,首先我们需

iOS开发——实用技术OC篇&amp;?Invocation简单介绍

Invocation简单介绍 方法一:运行时方法:(这里在之前的文章定时器的几种方法中说过:www.cnblogs.com/iCocos/p/4694581.html) 1:创建一个签名: NSMethodSignature *singature = [NSMethodSignature signatureWithObjCTypes:"[email protected]:"]; 这里我想如果你仔细的话肯定注意到了:后面的“[email protected]:”,这里是运行时的语法在这里

iOS开发——实用技术OC篇&amp;8行代码教你搞定导航控制器全屏滑动返回效果

8行代码教你搞定导航控制器全屏滑动返回效果 前言 此次文章,讲述的是导航控制器全屏滑动返回效果,而且代码量非常少,10行内搞定. 效果如图: 如果喜欢我的文章,可以关注我,也可以来小码哥,了解下我们的iOS培训课程.陆续还会有更新ing.... 一.自定义导航控制器 目的:以后需要使用全屏滑动返回功能,就使用自己定义的导航控制器. 二.分析导航控制器侧滑功能 效果:导航控制器默认自带了侧滑功能,当用户在界面的左边滑动的时候,就会有侧滑功能. 系统自带的侧滑效果: 分析: 1.导航控制器的view

iOS开发——实用技术OC篇&amp;事件处理详解

事件处理详解 一:事件处理 事件处理常见属性: 事件类型 @property(nonatomic,readonly) UIEventType     type; @property(nonatomic,readonly) UIEventSubtype  subtype; 事件产生的时间 @property(nonatomic,readonly) NSTimeInterval  timestamp; 事件传递 - hitTest:withEvent: SWIFT func hitTest(_ po

iOS开发——实用技术OC篇&amp;日期处理

日期处理 一:时间截 1 NSString *str=@"1368082020";//时间戳 2 3 NSTimeInterval time=[str doubleValue]+28800;//因为时差问题要加8小时 == 28800 sec 4 5 NSDate *detaildate=[NSDate dateWithTimeIntervalSince1970:time]; 6 7 NSLog(@"date:%@",[detaildate description]

iOS开发——实用技术OC篇&amp;CocoaPods简单粗暴

CocoaPods简单粗暴 直接上代码,不要问为什么,照着做就可以,我也是这么做的,具体的细节,请查看相关文档,网上太多! 1:移除ruby镜像 1 $ gem sources --remove https://rubygems.org/ 2:新增淘宝镜像 1 $ gem sources -a http://ruby.taobao.org/ 3:查看列表 1 $ gem sources -l 4:正式安装 1 sudo gem install cocoapods 接下来就是开始使用了. 查看对应