01.基本操作

1. 反射 NSString,Class,SEL,Protocol

FOUNDATION_EXPORT NSString *NSStringFromSelector(SEL aSelector);
FOUNDATION_EXPORT SEL NSSelectorFromString(NSString *aSelectorName);

FOUNDATION_EXPORT NSString *NSStringFromClass(Class aClass);
FOUNDATION_EXPORT Class _Nullable NSClassFromString(NSString *aClassName);

FOUNDATION_EXPORT NSString *NSStringFromProtocol(Protocol *proto) API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0));
FOUNDATION_EXPORT Protocol * _Nullable NSProtocolFromString(NSString *namestr) API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0));

2. 动态创建一个类

  • 创建一个继承NSObject的类,设定类名并初始化;

  • 为这个类增加一个实例变量,通过KVC给这个实例变量赋值。

  • 为这个类增加一个方法,在这个方法中打印一些值。

  • 通过这个类的实例调用新增的方法。

3. 获取一个类的所有方法

class_copyMethodList

实例方法

类方法

4. 获取一个类的所有成员变量

class_copyIvarList

5. 获取一个类的所有属性变量

class_copyPropertyList

6. 获取协议列表

7. 动态给一个类新增一个方法

8. 动态增加实例变量

9. 动态改变对象的某个变量值

  • 可以是属性变量(注意加 _ ),也可以是私有的全局变量

10. 属性关联

11. 交换方法

参考

https://www.jianshu.com/p/8225526096c7

Last updated

Was this helpful?