码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-11-28 18:19:35      阅读:132      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!