您当前的位置: 首页 >  清风清晨 objective-c

【id类型和NSObject指针 ObjectIve-C中】

清风清晨 发布时间:2022-08-03 22:41:13 ,浏览量:3

前言

1)NSObject,是Objective-C中,所有类的基类。
2)根据里氏替换原则LSP,NSObject指针就可以指向任何类型的Objective-C对象。
3)所以,我们说NSObject指针,是一个万能指针。
例如:
NSObject *obj1 = [Person new];
NSObject *obj2 = [Student new];
NSObject *obj3 = @“jack”;
都是没有问题的。
但是,
NSString *str = [Person new];
就会被编译器给一个大警告,它说,你这个类型不一样!
4)所以,NSObject指针是1个万能指针,可以指向任意的OC对象。
5)但是,有一个问题:
如果,Person类中有一个sayHi()方法。
但是,你能不能通过obj1去调用这个sayHi()方法呢,答案是,不能!
因为,编译器认为obj1是NSObject类型的,NSObject类型里有sayHi()方法吗,没有,所以,编译器就认为不能调用!
那如果我非要调用呢,强转!
[(Person *)obj1 sayHi];
那这句话运行的时候,会不会出错,不会,因为obj1指向的对象里面,本来就有sayHi()方法吗!
如果要调obj2的study()方法呢,能直接调吗,也

关注
打赏
查看更多评论

清风清晨

暂无认证

  • 3浏览

    0关注

    70博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录