#import <Foundation/Foundation.h>
#import "Student.h"
#import "Person.h"
#pragma mark object常用方法
void objectUse(){
Student *stu = [[Student alloc]init];
//isKindOfClass判断对象是否属于某个类,或其子类
if ([stu isKindOfClass:[Person class]]) {
NSLog(@"stu属于或继承自person");
}
//isMemberOfClass对象是否属于某个类,不包括子类
Boolean reuslt = [stu isMemberOfClass:[Person class]];
NSLog(@"%i",reuslt);
//直接调用
//[stu test];
//间接调用
[stu performSelector:@selector(test1)];
//withObject只能传id,不能传基本数据类型
[stu performSelector:@selector(test2:) withObject:@"12345 00--==="];
}
void reflect(){
//类名反射
NSString *str = @"Person";
Class class = NSClassFromString(str);
Person *p = [[class alloc]init];
NSLog(@"%@",p);
//class变字符串
NSString *str1 = NSStringFromClass([Person class]);
NSLog(@"%@",str1);
//方法的反射
NSString *method = @"test22";
SEL selector = NSSelectorFromString(method);
[p performSelector:selector];
//将SEL转化为字符串
NSString *str3 = NSStringFromSelector(selector);
NSLog(@"%@",str3);
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
reflect();
}
return 0;
}
foundation-NSObject和反射
最新推荐文章于 2024-09-25 18:24:32 发布