A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

OC是动态语言,在执行方法的过程中,系统会通过对象的isa指针找到类,类在代码区有方法调度表,用来查找方法的,从结果看出,每个方法的间隔4字节,这四个字节是什么吗?系统找到了类,通过什么机制找到对应的方法?系统底层类的构造是什么?

  1. #import <Foundation/Foundation.h>

  2. @interface AAAA : NSObject
  3. - (void)printIsa;
  4. - (void)aaa;
  5. - (void)bbb;
  6. - (void)ccc;
  7. - (void)ddd;
  8. @end

  9. @implementation AAAA
  10. - (void)printIsa {
  11.   NSLog(@"%p",*(&isa));
  12. }
  13. -(void)aaa {
  14.   NSLog(@"%p",@selector(aaa));
  15. }
  16. - (void)bbb {
  17.   NSLog(@"%p",@selector(bbb));
  18. }
  19. - (void)ccc {
  20.   NSLog(@"%p",@selector(ccc));
  21. }
  22. - (void)ddd {
  23.   NSLog(@"%p",@selector(ddd));
  24. }
  25. @end

  26. int main(int argc, const char * argv[]) {
  27.   @autoreleasepool {
  28.     AAAA *abc=[AAAA new];
  29.       [abc printIsa];
  30.       [abc aaa];
  31.       [abc bbb];
  32.       [abc ccc];
  33.       [abc ddd];
  34.     NSLog(@"----------------");
  35.     AAAA *uuu=[AAAA new];
  36.       [uuu printIsa];
  37.       [uuu aaa];
  38.       [uuu bbb];
  39.       [uuu ccc];
  40.       [uuu ddd];
  41.   }
  42.     return 0;
  43. }
复制代码
参与讨论福利:《iOS开发指南 从零基础到App Store上架》
游客,如果您要查看本帖隐藏内容请回复


qq.png (59.1 KB, 下载次数: 0)

程序结果

程序结果

2 个回复

倒序浏览
看到你这样命名方式,,,,,,,就不想继续看下去,,,顿时心理一万匹神兽奔腾而过,,,,,这位童鞋,,,,请以后命名遵守规范...
回复 使用道具 举报
叶子哥 发表于 2016-7-1 20:39
看到你这样命名方式,,,,,,,就不想继续看下去,,,顿时心理一万匹神兽奔腾而过,,,,,这位童鞋,,,,请以后命名遵 ...

举例子,懂就行了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马