Objective-c, 来源: 开发者 投稿于 2019-06-21 被查看 44792 次 评论:247 Objective-c, #import <Foundation/Foundation.h> #import "Foo.h" #import "Circle.h" /* *从下例可以看得出 Class 代表的是这个类的本身,可以看做是对这个类的描述 *ID代表的是这个类的实例 *IMP代表的是一个函数指针 *SEL表示的是一个函数 */ int main (int argc, const char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; Class f = NSClassFromString(@"Foo"); [f test1]; [Foo test1]; SEL s = @selector(test1); NSLog(@"s -> %p, %s",s->sel_id, s->sel_types); IMP i = [f instanceMethodForSelector:@selector(moreThread)];//函数指针 NSLog(@"%p", i); id i2 = i([f new], @selector(moreThread));//调用函数指针 NSLog(@"%s", i2->class_pointer->name);//指向了NSAutoreleasePool IMP i1 = [Circle instanceMethodForSelector:@selector(moreThread)]; NSLog(@"%p", i1); //Class f = [Foo class]; //id i = [f new]; //[i test]; //NSLog(@"name: %s", f->name); /* SEL s = @selector(moreThread); NSLog(@"s -> %p, %s",s->sel_id, s->sel_types); */ // NSLog(@"s -> %@, %@", s->sel_id, s->sel_types); /* NSLog(@"%p", @selector(moreThread)); NSLog(@"%p", @selector(moreThread)); id a = [Foo new]; NSLog(@"%p", a->class_pointer); NSLog(@"name: %s", a->class_pointer->name); NSLog(@"version : %d", a->class_pointer->version); NSLog(@"info : %d", a->class_pointer->info); NSLog(@"instance_size : %d", a->class_pointer->instance_size); NSLog(@"super class name : %s", a->class_pointer->super_class->name); */ [pool drain]; return 0; } 相关文章暂无相关文章
用户评论