智勇播客:
上一篇文章中,跟大家讲解过runtime的几个入门级方法的使用。但大家肯定会有一个疑问就是,虽然知道了这些方法的使用,但这些方法应该在哪里用?什么时候用?
这篇文章中,就跟大家来一个实战项目,在真实项目中,运用上这些方法。
对于我个人而言,runtime的使用,大多数都是用于修改类的方法、增加类的属性成员,特别是对于系统的类。在系统原生类的基础上,利用进行时来修改方法、添加属性成员会比你继承这个类,效率要快的多,而且实用性也要高的多。
为什么说对于实用性来说要高呢?因为对于系统类来说,你能看到他的方法、属性成员,往往只是表面的。但这绝对不是这个类的所有方法、属性成员。你可以当做还有一些隐性的方法、属性成员,你在编译时,是看不到的。只有代码运行起来后,才能看到。
这也是能体现出OC是一门进行时语言的一个地方。
此时,你要修改一些,你知道,但却在编译时 还没有体现出来属性成员和方法函数时,你就只能乖乖的用runtime进行时吧!
现在实战项目来了:
系统类UIImagePickerController 大家都不会陌生,基本上一个成熟的APP都需要用到这个类。相册选择器
让用户去相册中,选择相片 就只能使用系统的这个类,让后监听delegate回调 取出用户选择的相片。
但系统这个类有一个不好的地方就是,不能多选!每次选择相片,只能一张一张的选! 如果让用户去选9张相片,你的APP让用户去一张一张的选,我想选完9张相片后,你的APP就可以跟用户说byebye了!
而这个项目,就是利用runtime去修改UIImagePickerController的属性、方法函数,来实现我们需要的多选状态。
代码我直接上到gitHub上了。
大家移步到gitHub上downLoad一下就好了
Demo中 注释非常的详细,特别是对于runtime中的方法解说的很详细。所以这里就不再重复了。
如果觉得有用,记得gitHub上给个星!
在这里上一些Demo的运行图: