美文网首页
- (void)doesNotRecognizeSelector

- (void)doesNotRecognizeSelector

作者: SpursGo | 来源:发表于2017-03-13 11:21 被阅读23次

这个方法比较有意思,只是程序主动抛出一个-[Student sayHi]: unrecognized selector sent to instance 0x7fc370798e80不能识别方法的异常
这个方法有什么用呢?
有一个Person类, 其中一个sayHi方法,我们要求所有子类都要重写(当然我们可以使用协议),我们就可以这样写

@implementation Person
- (void)sayHi {
    NSLog(@"if you not override this method, you will get a exception");
    [self doesNotRecognizeSelector:_cmd];
}
@end

如果子类没有重写父类方法,就会调用到该方法,此时就会抛出异常,打上异常断点,程序会自动定位到这一行
2015-09-28 10:21:04.099 MethodForSelector[857:352928] if you not override this method, you will get a exception
2015-09-28 10:21:04.099 MethodForSelector[857:352928] -[Student sayHi]: unrecognized selector sent to instance 0x7fc370798e80
(lldb),当然,这并不是一个好方法。

也就是说父类写了一个方法,然后调了一下这个方法。如果子类没有重写这个方法,在运行期间子类调用这个父类的方法,会立刻崩溃,并且报 doesn't recognise seletor 这个问题 这个方法比较刚

相关文章

  • - (void)doesNotRecognizeSelector

    这个方法比较有意思,只是程序主动抛出一个-[Student sayHi]: unrecognized select...

  • - (void)doesNotRecognizeSelector

    这个方法比较有意思,只是程序主动抛出一个-[Student sayHi]: unrecognized select...

  • void *(*)(void *)、void *(^)(void

  • void和void*

    总结: void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 1...

  • void和void *

    一、void void的意思是“无类型”,相对于void *来说,使用的时候比较简单,一般只在两个地方使用: 当函...

  • void 和 void *

    一...void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。(1)void指...

  • void 和 void*

    void指针是什么? void指针一般被称为通用指针或泛指针,它是C关于“纯粹地址(raw address)”的一...

  • void 与void *(一)

    (一)Void的使用规则: 1.函数没有返回值,函数类型声明为void; 2.如果函数没有参...

  • void与void*(二)

    (三)void的使用 void关键字的使用规则: 1.如果函数没有返回值,那么应声明为void类型 ...

  • void与void*详解

    void关键字的使用规则: 1. 如果函数没有返回值,那么应声明为void类型; 2. 如果函数无参数,那么应...

网友评论

      本文标题:- (void)doesNotRecognizeSelector

      本文链接:https://www.haomeiwen.com/subject/inefnttx.html