采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
5-3.文章中提到当调用一个类方法时,如果该类方法没有实现,则会调用同名的实例方法。这样说我有点不理解,应该是只针对NSObject类吧,其他类没有这个特性吧。
具体你可以看下那个对象,类对象,元类对象的isa 和super class指针的指向 尤其关注根元类对象的这两个指针的指向 你就会明白了
你说的这个关系我是理解的,比如先用代码试一下,这个例子: #import <Foundation/Foundation.h> @interface TestClass : NSObject - (void)testMethod; + (void)testMethod; @end #import "TestClass.h" @implementation TestClass - (void)testMethod { NSLog(@"aaaaa"); } @end 在其他类中调用[TestClass testMethod];是会崩溃的啊。 而且我觉得也不可能会调用到,因为整个流程是这样的: TestClass调用类方法的时候会首先从元类对象的方法列表中查找,没有,则会继续去元类的父类中查找(也就是NSObject的元类中查找),当然也没找到,则继续去父类中查找(也就是NSObject类对象中查找),当然也没有,则继续去父类中查找(也就是NSObject类对象的父类nil),则直接崩溃,怎么会调用到TestClass类对象中的同名方法呢?求解。多谢!
你方法添加的位置不对 应该放到nsobject的分类里面
你的例子和问题是不符的 所以验证结果没有意义,给你改正一下: @interface NSObject (Test) - (void)testMethod; @end @implementation NSObject (Test) - (void)testMethod { NSLog(@"aaaaa") } @end 回复长度有限 接着看下一个回复
登录后可查看更多问答,登录/注册
从BAT/TMD名企真题入手,结合源码及应用,构建完整iOS知识体系
1.3k 11
1.9k 9
1.2k 9
1.0k 8
968 8