我的项目在调试模式下编译并运行正常,但是当我切换到x86_64编译版本时,出现尝试使用NSRect setBounds的编译器错误。 (这些错误读为“setBounds的参数1的不兼容类型”。)即使使用NS_BUILD_32_LIKE_64宏也无法设置边界
我有很多帖子建议在Cocoa(Foundation)导入上添加NS_BUILD_32_LIKE_64宏定义,以便“if NS_BUILD_32_LIKE_64 “NSGeometry.h中的语言将为true,并且将使用必需的typedefs。所以我将宏定义添加到违规类的h文件中:
#define NS_BUILD_32_LIKE_64 1
#import <Cocoa/Cocoa.h>
而且我仍然收到相同的编译错误。
我也试过从NSRect明确转换到CGRect,所以,而不是这个。 。 。
// rectIncomingSource is an NSRect
calayer.bounds = rectIncomingSource;
。 。 。我写到:
calayer.bounds = CGRectMake(rectIncomingSource.origin.x, rectIncomingSource.origin.y, rectIncomingSource.size.width, rectIncomingSource.size.height);
同样的错误。
为什么设置边界是唯一的问题?根据Apple文档,NSInteger和NSUInteger是主要的转换问题,我将它们用在所有地方,但编译器不会抱怨它们。那为什么它会窒息?
我很可能在这里错过了一些非常简单的事情 - 对此我向法师道歉。对盲人有帮助吗?