首页 > 其他 > 详细

关于指针变量编译和运行时

时间:2015-11-28 18:17:35      阅读:253      评论:0      收藏:0      [点我收藏+]

指针变量编译时只能运行编译时的方法,不能调用运行时类型的方法,即使它实际所指对象确实包含该方法。

Father* fa=[[Son alloc]init];

编译时是:Father  

运行时时:Son

解决方法: 强制转换成子类类型,这样 编译和运行时的类型就相同了

//下面编译时类型和运行时类型不一样,多态发生

FKBase* ploymophicBc=[[FKSubclass alloc]init];

[ploymophicBc base];

[ploymophicBc test];

//FKbase类没有提供sub方法,所以编译出错

//[ploymophicBc sub];

//强制转换,将编译时类型变得跟运行时一样

[(FKSubclass*)ploymophicBc sub];

NSLog(@"%@",ploymophicBc);

关于指针变量编译和运行时

原文:http://www.cnblogs.com/yanggenwei/p/5002928.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!