为iOS和Mac OS X编写应用程序的最佳C类型策略
我正在同时为iOS和MacOSX编写一个OpenGL(ES)应用程序。代码的某些部分是特定于平台的,我使用条件编译,但其中大部分对两个平台都是通用的 我开始用iOS开发代码。当我第一次尝试为Mac编译时,我意识到在桌面上,基本的cocoa C类型,如为iOS和Mac OS X编写应用程序的最佳C类型策略,ios,objective-c,macos,cocoa,32bit-64bit,Ios,Objective C,Macos,Cocoa,32bit 64bit,我正在同时为iOS和MacOSX编写一个OpenGL(ES)应用程序。代码的某些部分是特定于平台的,我使用条件编译,但其中大部分对两个平台都是通用的 我开始用iOS开发代码。当我第一次尝试为Mac编译时,我意识到在桌面上,基本的cocoa C类型,如CGFloat和NSUInteger是64位的(即分别是double和unsigned long,而不是float和unsigned int),因此我得到了很多“隐式向下广播警告”当: 我将CGFloat分配给GLfloat INSLog()使用%u
CGFloat
和NSUInteger
是64位的(即分别是double
和unsigned long
,而不是float
和unsigned int
),因此我得到了很多“隐式向下广播警告”当:
CGFloat
分配给GLfloat
NSLog()
使用%u
float
而不是CGFloat
,但我还需要CGSize
,CGRect
,CGPoint
,这样也会造成问题
关于#2,我可以切换到使用uint
而不是NSUInteger
,但cocoa在任何地方都使用NSUInteger
(例如[NSArray count]
)
关于基本的C类型,编写最干净的代码,并且在iOS和OS X上编译时没有很多警告的最佳策略(或建议)是什么?加上iOS现在也有64位体系结构这一事实,我发现尽可能使用显式类型是最好的选择。游戏中心框架正是通过分数(
int\u 64t
)来实现这一点的。另一方面,核心音频似乎使用定义的类型SInt32
,Uint64
,等等。
从CGPoint
/CGRect
获取浮点值以传递给OpenGL ES可能会有点棘手,不过
此外,我建议大家从头读到脚 …苹果宣布iOS过渡到64位!!!情节越来越复杂了!