CGFloat和float的区别及案例分析

本文详细阐述了CGFloat与float之间的区别,特别是在32位与64位系统中的定义差异,并通过UITableView代理函数的具体案例分析,展示了在不同位数系统中使用不当可能导致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CGFloat和float的区别及案例分析

区别:

在32位下,CGFloat定义为float; 在64位下,CGFloat定义为double

typedef float CGFloat;// 32-bit  
typedef double CGFloat;// 64-bit  


编程策略:
对于需要兼容64位机器的程序而言,所有使用float的地方都改为用CGFloat。
长远角度考虑推荐尽量使用CGFloat,尽管在32位上相比float增加了一些memory footprint的消耗。


案例分析:
64位系统下tableViewCell界面错位,原因如下:
UITableView的代理函数
- (CGFloat)tableView:(UITableView *)tableViewheightForRowAtIndexPath:(NSIndexPath *)indexPath
返回值为CGFloat,如果实现该方法时写成float,在32位不会警告而且界面正常,如果在64位下,则有警告:

Conflicting return type in implementation of 'tableView:heightForRowAtIndexPath:': 'CGFloat' (aka 'double') vs 'float' 

而且各个cell都错位


参考:

http://blog.sina.com.cn/s/blog_6c6b2acd0100z4jb.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值