iOS 32和64位体系结构的正确返回类型
我有一个目前支持armv7、armv7s和arm64的应用程序。在A7 64位芯片发布之前就开始了这个项目,所有的设计都是为了只支持32位架构 我在尝试构建到64位设备时收到冲突的返回类型警告。比如说,iOS 32和64位体系结构的正确返回类型,ios,64-bit,32-bit,Ios,64 Bit,32 Bit,我有一个目前支持armv7、armv7s和arm64的应用程序。在A7 64位芯片发布之前就开始了这个项目,所有的设计都是为了只支持32位架构 我在尝试构建到64位设备时收到冲突的返回类型警告。比如说, - (float) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 45.0; } tableView实现中存在冲突的返回类型:heightForR
- (float) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 45.0;
}
tableView实现中存在冲突的返回类型:heightForRowAtIndexPath:':'CGFloat'(也称为'double')与'float'
如果我将返回类型切换为double以获得64位支持,那么在尝试为32位系统构建时,我会得到相同的相反情况,即它希望使用浮点而不是double
我如何正确地支持这两个方面?我是否应该按照中所述简单地转换为64位,并忽略编译器在尝试构建32位时抛出的警告?从协议复制方法签名:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
CGFloat
被适当定义,以处理应用程序运行的架构从协议复制方法签名:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
CGFloat
是适当定义的,以处理应用程序运行的架构您需要使用CGFloat类型,其定义如下:
#if defined(__LP64__) && __LP64__
# define CGFLOAT_TYPE double
# define CGFLOAT_IS_DOUBLE 1
# define CGFLOAT_MIN DBL_MIN
# define CGFLOAT_MAX DBL_MAX
#else
# define CGFLOAT_TYPE float
# define CGFLOAT_IS_DOUBLE 0
# define CGFLOAT_MIN FLT_MIN
# define CGFLOAT_MAX FLT_MAX
#endif
CGFloat是一个宏,在32位平台上subs out float,在64位平台上double。您需要使用CGFloat类型,其定义如下:
#if defined(__LP64__) && __LP64__
# define CGFLOAT_TYPE double
# define CGFLOAT_IS_DOUBLE 1
# define CGFLOAT_MIN DBL_MIN
# define CGFLOAT_MAX DBL_MAX
#else
# define CGFLOAT_TYPE float
# define CGFLOAT_IS_DOUBLE 0
# define CGFLOAT_MIN FLT_MIN
# define CGFLOAT_MAX FLT_MAX
#endif
CGFloat是一个宏,在32位平台上使用SUB out float,在64位平台上使用double