-
1.NSObject常用方法:(类别判断, 也可以说是动态方法)
- Student *stu = [[[Student alloc] init] autorelease];
- // isKindOfClass判断对象是否属于某个类 或者 子类
- if ( [stu isKindOfClass:[Person class]] ) {
- // NSLog(@"stu属于Person或者继承自Person");
- }
- // isMemberOfClass判断对象是否属于某个类(不包括子类)
- BOOL result = [stu isMemberOfClass:[Student class]];
- // NSLog(@"%i", result);
- // 直接调用
- // [stu test];
- // 间接调用
- [stu performSelector:@selector(test)];
- // [stu performSelector:@selector(test2:) withObject:@"abc"];
- // 延迟2秒后调用test2:方法
- [stu performSelector:@selector(test2:) withObject:@"abc" afterDelay:2];
2.类的反射方法:- // 类的反射(可以用作一些viewController多得时候,用类的反射取得VC, 比如tabBarController, 侧滑菜单等)
- NSString *str = @"Person";
- Class class = NSClassFromString(str);
- Person *person = [[class alloc] init];
- NSLog(@"%@", person);
- // Class变成字符串
- NSString *name = NSStringFromClass([Person class]);
- // 方法的反射
- NSString *method = @"test";
- SEL selector = NSSelectorFromString(method);
- [person performSelector:selector];
- // 将SEL转换为字符串
- NSString *selectorName = NSStringFromSelector(selector);
iOS反射---2.类方法的反射
最新推荐文章于 2020-05-10 18:05:10 发布