反射是什么?可以举出几个应用场景么?
2018-10-07 本文已影响93人
natewang
在计算机科学中,反射是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。[1]用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为。
要注意术语“反射”和“内省”(type introspection)的关系。内省(或称“自省”)机制仅指程序在运行时对自身信息(称为元数据)的检测;反射机制不仅包括要能在运行时对程序自身信息进行检测,还要求程序能进一步根据这些信息改变程序状态或结构。
(一个重点是改变,一个重点是检测)
比如通过类名,生成类 Class * tempClass = NSClassFromString(str);
为类增加方法等。
https://juejin.im/post/5b6011585188251af121fe2c
https://www.jianshu.com/p/3ed2c7bc6653
https://zh.wikipedia.org/wiki/%E5%8F%8D%E5%B0%84_(%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6)