【发布时间】:2013-09-13 14:31:09
【问题描述】:
我正在同时为 iOS 和 Mac OS X 编写一个 OpenGL(ES) 应用程序。代码的某些部分是特定于平台的,我使用条件编译,但大部分代码对两个平台都是通用的。
我开始在 iOS 中开发我的代码。当我第一次尝试为 Mac 编译时,我意识到在桌面上,CGFloat 和 NSUInteger 等基本 cocoa C 类型是 64 位的(即分别为 double 和 unsigned long,而不是 float和unsigned int),所以我收到了很多“隐式的沮丧警告”:
- 我将
CGFloat分配给GLfloat - 我
NSLog()使用%u编辑了一个NSUInteger
关于#1,我可以在任何地方切换到使用float 而不是CGFloat,但我还需要CGSize、CGRect、CGPoint,这样也会导致问题。
关于#2,我可以切换到使用uint 而不是NSUInteger,但可可在任何地方都使用NSUInteger(例如[NSArray count])。
关于基本 C 类型,编写最干净的代码并且在 iOS 和 OS X 上编译时没有大量警告的最佳策略(或建议)是什么?
【问题讨论】:
-
...aaaand Apple 宣布 iOS 过渡到 64 位!!!剧情变厚了!
标签: ios objective-c macos cocoa 32bit-64bit