您的位置:首页 > 其它

父类型指针可以指向子类型的对象。但是对于子类型的指针不能指向父类型的对象(原理)

2014-08-13 13:05 387 查看
<span style="font-size:24px;">//<span style="background-color: rgb(51, 204, 255);">父类型指针可以指向子类型的对象。但是对于子</span><span style="background-color: rgb(102, 102, 204);">类型</span><span style="background-color: rgb(51, 204, 255);">的指针不能指向父类型的对象</span>
//reason :父类有的方法子类全有,但是子类有的方法,父类不一定全有(牵扯到isa)
//原理:首先看看接收对象的类型是不是有对象要调用的方法,如果有,则看对象(指针变量)指向的那块空间里对应的<span style="color:#6633ff;background-color: rgb(51, 204, 255);">isa</span>(<span style="color:#33ccff;background-color: rgb(204, 102, 204);">类类型</span>,哪个类开辟空间,isa就是哪个类)是否有该方法,如果有,则正确
NSArray *arr = [NSMutableArray arrayWithObjects:@"hh",@"hh",@"hh",@"hh", nil];
NSInteger count = [arr count];//首先NSArray有count这个方法,然后在</span><pre name="code" class="objc">NSMutableArray开辟的空间上继承的isa里看有没有这个方法(NSArray改成NSString则会在看是否有这个方法的时候出错,如果NSArry和NSMutableArray交换一下位置,将count改成addObject方法,则会在编译期出错)
NSLog(@"%ld", count);

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐