利用Runtime 实现自动化归档

1.前言

对于对象的归档,之前使用MJ老师的MJExtension框架做字典转模型的时候,直接使用宏MJCodingImplementation就能实现对象自动实现存档和解档的方法,很是好用。但是有时候会遇到不需要用到字典转模型,不想使用框架时,就需要自己手动一个一个实现,有时候属性一多了,简单却繁琐的相同代码会让人觉得有点不耐烦。刚好看到袁峥老师的文章《让你快速上手Runtime》,于是自己想动手来实现用runtime,实现自动化归档,整个项目的代码 GitHub

2.对象归档

以下是一个可以跳过的步骤,简单的为自己回顾了实现对象归档的原始方法,创建一个类叫做学生类,其中学生有name,和sex属性。

正文部分转自 http://www.cocoachina.com/ios/20151026/13908.html

时间: 2024-08-13 04:50:23

利用Runtime 实现自动化归档的相关文章

iOS中利用 runtime 一键改变字体

http://www.cocoachina.com/ios/20160504/16109.html 本文为投稿文章,作者:HenryCheng(简书) 最近公司要在5月份举办个大型的发布会,所以在这之前要把版本稳定,界面提升,所以有很多细活要干.不过,趁前两天版本刚提交上线,这两天稍微闲一点,就把之前说的利用runtime一键改变字体的方法分享出来.有人会说,改变字体不是很简单吗,我直接找到字体名替换一下不就好了?客官不要急,先坐下来吃点瓜子,听我慢慢给你说来. 1.准备 我们新建一个项目名叫C

利用runtime动态生成对象?

利用runtime我们能够动态生成对象.属性.方法这特性 假定我们要动态生成DYViewController,并为它创建属性propertyName 1)对象名 NSString *class = @"DYViewController"; const char *className = [class cStringUsingEncoding:NSASCIIStringEncoding]; 2)从一个字符串返回一个Class Class newClass = objc_getClass(

利用runtime实现更加灵活的KVC

字典转模型在iOS开发中属于非常常见的操作. 比较简单的方式是 KVC ,但是这样会有一个局限 ,就是 模型中的属性必须和字典中的完全匹配,否则,KVC将会报错. 手动编写代码虽然比较灵活,但是如果字典中数据量庞大,也会是一个糟糕的体验. 针对以上问题,利用runtime实现一个更加灵活的字典转模型. 1.为 NSObject建立一个分类 NSObject+GQRuntimeTool.h文件 #import <Foundation/Foundation.h> @interface NSObje

iOS利用Runtime自定义控制器POP手势动画

前言 苹果在iOS 7以后给导航控制器增加了一个Pop的手势,只要手指在屏幕边缘滑动,当前的控制器的视图就会跟随你的手指移动,当用户松手后,系统会判断手指拖动出来的大小来决定是否要执行控制器的Pop操作. nav_pop_origin.gif 这个操作的想法非常好,但是系统给我们规定的范围必须是屏幕左侧边缘才可以触发,这样实际使用过程中对于有些产品会产生不便,于是有些app就采取整个屏幕都响应这个手势并且pop动画还是用系统原生的,这样操作起来确实方便好多. nav_pop_custom.gif

ios开发runtime学习五:KVC以及KVO,利用runtime实现字典转模型

一:KVC和KVO的学习 #import "StatusItem.h" /* 1:总结:KVC赋值:1:setValuesForKeysWithDictionary实现原理:遍历字典,得到所有的key,value值,再利用kvc, setVaue forkey来为value赋值 2: [item setValue:@"来自即刻笔记" forKey:@"source"],内部的底层实现, 1.首先去模型中查找有没有setSource,找到,直接调用

iOS 利用runtime调用方法

利用runtime调用方法,可实现不做import,直接调用 // Build Setting--> Apple LLVM 6.0 - Preprocessing--> Enable Strict Checking of objc_msgSend Calls  改为 NO - (void)execFunction2 { NSString *functionName = @"runWithFriend:"; NSString *className = @"Peopl

利用runtime给分类添加属性

在分类中利用@property添加属性,只能声明实例变量的存取声明,而没有存取方法的实现,可以利用runtime实现. 在头文件中定义属性 @property (nonatomic, copy)NSString *name; 在.m文件中实现存取方法 static char *key = "name"; - (NSString *)name { // 根据关联的key,获取关联的值. return objc_getAssociatedObject(self, key); } - (vo

利用runtime更改系统方法的实现

?   使用场景: ?    ?在项目中,我们可能遇到需要修改方法实现的需求,比如需要更换某些原始的实现代码,但是如果项目规模比较大 , 那么手动查找替换的方式就不可取了. 更好的方式是利用 runtime来替换. 最简单的,比如图片,假设我们之前用的方法都是 [UIImage imageNamed:@" "] 但是现在我们的图片改了,图片后缀批量增加了一个 _os8 ,下面我们看代码如何实现: 特别注意: 在我们的自定义方法中, 我们已经交换了 系统方法和自定义方法, 所以, 自定义

Runtime__iOS利用Runtime自定义控制器POP手势动画

前言 苹果在IOS7以后给导航控制器增加了一个Pop的手势,只要手指在屏幕边缘滑动,当前的控制器的视图就会跟随你的手指移动,当用户松手后,系统会判断手指拖动出来的大小来决定是否要执行控制器的Pop操作. nav_pop_origin.gif 这个操作的想法非常好,但是系统给我们规定的范围必须是屏幕左侧边缘才可以触发,这样实际使用过程中对于有些产品会产生不便,于是有些app就采取整个屏幕都响应这个手势并且pop动画还是用系统原生的,这样操作起来确实方便好多. nav_pop_custom.gif